我从同事那里听说 C++ 比 Java 更快,在寻求最高性能时,特别是对于金融应用程序,这是一条必经之路。但我的观察有点不同。谁能指出我实验的失败或在讨论中添加一些科学变量?
注1:我在 C++ 编译器中使用-O3(最大优化)和-O2 。
注2:包含每种语言的简短完整源代码。您可以随意在自己的机器上运行、进行更改、得出结论并分享。
注意3:如果将两个源代码并排放在编辑器中,您将看到它们的实现是等效的。
更新:我尝试clang++过g++各种优化选项(-O2、-O3、-Os、-march=native等),它们都产生了比 Java 慢的结果。我认为此时为了使 C++ 更快,我必须深入研究生成的汇编代码并进行一些汇编编程。我想知道在编写大型实际应用程序时这种方法(汇编编程和汇编调试)有多实用。
基准测试有什么作用?
执行 1000 万次,丢弃前 100 万次进行预热,并输出平均、最短和最长时间。
对于C++我得到:(使用 -O3 和 -O2)
$ g++ --version
g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
$ g++ TimeBubbleSort.cpp -o TimeBubbleSort -std=c++11 -O3
$ ./TimeBubbleSort 10000000 1000000 60
Value …Run Code Online (Sandbox Code Playgroud)