【发布时间】:2018-02-20 03:35:58
【问题描述】:
以下小程序计算 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 版本一样快?有可能吗?
【问题讨论】:
-
编译C++代码的时候有没有开启优化?
-
cout << (1000000001)*(1000000002)/2 << endl; -
这两种语言都没有任何固有的速度优势。两种语言的不同实现可能更快或更慢,答案也可能取决于您可能选择的特定于实现的编译时和/或运行时选项。早在 Java 还很新的时候,only 真正的 Java 实现比在相同硬件上几乎任何 C 实现慢,但那是几十年前的事了。
-
除了优化编译器可以识别和处理某些循环。所以这更像是建议星际迷航中允许使用传送器的赛车手应该这样做。他们应该这样做。
标签: java c++ performance loops optimization