gpt4 book ai didi

java - C++ vs Java 速度(带算术的循环)

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:49 26 4
gpt4 key购买 nike

以下计算 1 到 10 亿之间所有数字之和的小程序是用 C++ 和 Java 尽可能接近地编写的。我的理解是 C++ 是“更快”的语言,但是此代码的 Java 版本在 ~.5 秒内完成,而 C++ 为~3 秒。

C++(GCC 编译器):

int main(){
long long x = 0;
for (long i=0;i<1000000001;i++){
x=x+i;
}
cout << x << endl;
return 0;
}

Java:

public class Main {
public static void main(String[] args) {
long x=0;
for (long i=0;i<1000000001;i++){
x=x+i;
}
System.out.println(x);

}

}

如何优化 C++ 代码使其与 JAVA 版本一样快?有可能吗?

最佳答案

这个问题是不该做什么的完美示例。整个循环相当于一次赋值,任何优化编译器都知道这一点。因此,您正在测量启动程序和输出一行所需的时间。

然后 Java 必须以您希望的任何因素丢失,因为运行 Java 代码包括启动 JVM,这非常慢。此外,它还包括优化编译。 javac 所做的只是从 Java 源代码到 Java 字节码的编译,并没有尝试优化任何东西。所有优化都发生在运行时(字节码到机器码)。 1

因此我们可以得出结论,对于任何不到几秒钟的任务,Java 都非常慢。如果您足够努力,您可以获得 20 或无穷大(除以零)的因数。

比较重要的结论是没有意义。参见 How do I write a correct micro-benchmark in Java? ,如果您想要一个有意义的结果。


1 这适用于桌面 Java。在 Android 上,情况有所不同。

关于java - C++ vs Java 速度(带算术的循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com