Java/C++性能

One*_*mir 1 c++ java

大家好我已经开始学习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);
  }
}
Run Code Online (Sandbox Code Playgroud)

输出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;
}
Run Code Online (Sandbox Code Playgroud)

输出0.000810

我有点困惑.Java真的那么慢,或者我做错了什么?

aio*_*obe 5

你不能像这样微基准编程语言.

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

一些基准测试会告诉你C++更快,其他人会说相反.它实际上归结为基准测试的作用.谷歌的Java c ++基准测试,你会发现很多种类.

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

  • @aioobe:有数千个因素,当然 - 但在这种情况下还有一千倍.平方. (2认同)