Java 和 C++ 中的两个嵌套循环,每个循环 100000 次。一致地观察到,Java 的性能优于 C++。 C++ 花费了 3.26 秒,而 Java 花费了 0.019 秒。这能解释一下吗?
请参阅以下两个代码片段。
int main() {
for (int i = 0; i < 100000; i++) {
for (int j = 0; j < 100000; j++);
}
return 0;
}
class Main {
public static void main(String[] args) {
for (int i = 0; i < 100000; i++) {
for (int j = 0; j < 100000; j++);
}
}
}
第一个代码是 C++ 代码,第二个代码是 Java 代码。第一个预计会更快。
我可以举一些不适合评论的例子——已经确定你需要优化。以下是一些示例:
#include <boost/timer/timer.hpp>
int main() {
boost::timer::auto_cpu_timer timer;
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 10000; j++);
}
return 0;
}
是的,我减少了计数,这样我就可以在还活着的时候完成这篇文章。
stieber@gatekeeper:~ $ g++ Test.cpp -lboost_timer && ./a.out
0.532601s wall, 0.520000s user + 0.000000s system = 0.520000s CPU (97.6%)
stieber@gatekeeper:~ $ g++ -O3 Test.cpp -lboost_timer && ./a.out
0.000008s wall, 0.000000s user + 0.000000s system = 0.000000s CPU (n/a%)
这不是一个比较任何东西的好例子,因为任何像样的编译器,无论语言如何,都会优化整个事情......