小编Spe*_*ser的帖子

为什么在这个简单的 BubbleSort 基准测试示例中 Java 比 C++ 更快?

我从同事那里听说 C++ 比 Java 更快,在寻求最高性能时,特别是对于金融应用程序,这是一条必经之路。但我的观察有点不同。谁能指出我实验的失败或在讨论中添加一些科学变量?

注1:我在 C++ 编译器中使用-O3(最大优化)和-O2 。

注2:包含每种语言的简短完整源代码。您可以随意在自己的机器上运行、进行更改、得出结论并分享。

注意3:如果将两个源代码并排放在编辑器中,您将看到它们的实现是等效的

更新:我尝试clang++g++各种优化选项(-O2-O3-Os-march=native等),它们都产生了比 Java 慢的结果。我认为此时为了使 C++ 更快,我必须深入研究生成的汇编代码并进行一些汇编编程。我想知道在编写大型实际应用程序时这种方法(汇编编程和汇编调试)有多实用。

基准测试有什么作用?

  • 在堆中(而不是在堆栈中)创建一个int数组
  • 启动时钟
  • 填充数组
  • 使用冒泡排序对数组进行排序
  • 停止时钟

执行 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)

c++ java performance benchmarking bubble-sort

2
推荐指数
1
解决办法
1845
查看次数

标签 统计

benchmarking ×1

bubble-sort ×1

c++ ×1

java ×1

performance ×1