Java/C++ 性能

标签 java c++

<分区>

大家好 我已经开始学习 Java,并且听说过它运行缓慢。为了实验,我用 C++ 和 Java 编写了两个程序,这两个程序看起来是一样的

import java.util.*;

class Java {
  public static void main(String args[]) {
    long beg = System.currentTimeMillis();
    for (int i = 0; i < 200000000; ++i) { }
    long end = System.currentTimeMillis();
    System.out.println(end - beg);
  }
}

输出334

#include <cstdio>
#include <ctime>

int main() {
      double beg = clock();
      for (int i = 0; i < 200000000; ++i) { }
      double end = clock();
      printf("%f\n", (end - beg) / double(CLOCKS_PER_SEC) / 1000.0);
      return 0;
}

输出 0.000810

我有点懵。 Java 真的那么慢还是我做错了什么?

最佳答案

你不能像这样对编程语言进行微基准测试。

有成千上万的因素在起作用。请记住,Java 程序在虚拟机中运行需要一些时间才能启动。

一些基准测试会告诉您 C++ 更快,而另一些则相反。这真的归结为基准的作用。 Google java c++ 基准测试,您会发现很多这两种基准。

现代 JIT 编译器可以进行任何 C++ 编译器可以进行的大多数优化,因此对于纯数字运算算法,它们具有相似的性能数据。

关于Java/C++ 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6101827/

相关文章:

java - Travis CI 使用 gradle 和 Antlr 构建错误

c++ - 使用 OpenSG python 绑定(bind)渲染

c++ - 如何使用 Win32 API 右键拖动?

java - DateTimeFormatter 为边缘情况提供了错误的格式

java - java中的原始数据类型是如何定义/编写的?

c++ - 访问 Qtableview 中的复选框

c++ - 获取音量帮助

c++ - 继承与类型转换

java - JPA:使用服务和多个存储库的正确方法

java - 有没有办法防止光标点击某个字符串?