你好我有一个用c ++编写的程序,它在字符串前面加上Hello world(50000000)次,我想看看toke多长时间。这是我的来源
#include <iostream>
#include <string>
using namespace std;
int main() {
string str2("Hello");
auto start_t = chrono::high_resolution_clock::now();
for (size_t i = 0; i < 50000000; i++) str2 += "Hello";
cout << chrono::duration_cast<chrono::milliseconds>(chrono::high_resolution_clock::now() - start_t).count() << " milliseconds\n" << endl;
return 0;
}
我在3种不同的情况下检查了这个来源:
情况1:
os: windows
ide: clion (latest version)
MinGW: 5
CMAKE: 3.8.2
GDB: 7.11.1
c++: 17
compile: Release
我得到了这个结果:
情况2:
os: windows
ide: vistual studio 2017
compile: Release
我得到了这个结果:
情况3:
os: MAC OSX
ide: clion (latest version)
CMAKE: 3.8.2
GDB: 7.11.1
c++: 17
compile: Release
我得到了这个结果:
我检查了Windows和Mac,我得到了这个结果......为什么?为什么结果完全不同?所有情况(发布模式和......)都是一样的!
答案 0 :(得分:0)
你的比较没有稳定的基础。
您正在使用不同的编译器比较不同操作系统上的代码。
为了实际进行比较,你需要保留一些东西。例如,您可以在一个系统中检查所有三个编译器,或者在所有三个系统中检查一个编译器。
此外,尝试在每个编译器上使用相同的优化标志,以便它们以类似的方式优化代码。