在mac和windows

时间:2017-10-06 09:12:01

标签: c++ string windows macos performance

你好我有一个用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

我得到了这个结果:

3100毫秒

情况2:

os: windows
ide: vistual studio 2017
compile: Release

我得到了这个结果:

700毫秒

情况3:

os: MAC OSX
ide: clion (latest version)
CMAKE: 3.8.2
GDB: 7.11.1
c++: 17
compile: Release

我得到了这个结果:

1200毫秒

我检查了Windows和Mac,我得到了这个结果......为什么?为什么结果完全不同?所有情况(发布模式和......)都是一样的!

1 个答案:

答案 0 :(得分:0)

你的比较没有稳定的基础。

您正在使用不同的编译器比较不同操作系统上的代码。

为了实际进行比较,你需要保留一些东西。例如,您可以在一个系统中检查所有三个编译器,或者在所有三个系统中检查一个编译器。

此外,尝试在每个编译器上使用相同的优化标志,以便它们以类似的方式优化代码。