为什么MSVC编译器比Linux上的gcc和Mac上的Xcode C ++编译器慢得多

我无法弄清楚为什么以下代码片段的执行时间在Windows(MSVC ++)虚拟机,Linux(GCC)虚拟机和Mac(xCode)物理机器上显着不同。

#include <iostream> #include <ctime> #include <ratio> #include <chrono> using namespace std; using namespace std::chrono; int main() { const int TIMES = 100; const int STARS = 1000; steady_clock::time_point t1;// = steady_clock::now(); steady_clock::time_point t2;// = steady_clock::now(); int totalCountMicro = 0; int totalCountMilli = 0; for(int i = 0; i < TIMES; i++) { t1 = steady_clock::now(); for (int j = 0; j< STARS; j++) cout << "*"; t2 = steady_clock::now(); cout << endl; totalCountMilli += duration_cast<duration<int, milli>>(t2 - t1).count(); totalCountMicro += duration_cast<duration<int, micro>>(t2 - t1).count(); } cout << "printing out " << STARS << " stars " << TIMES << " times..." << endl; cout << "takes " << (totalCountMilli / TIMES) << " milliseconds on average." << endl; cout << "takes " << (totalCountMicro / TIMES) << " microseconds on average." << endl; getchar(); return 0; } 

上面的代码试图打印1000个星星100次,并计算打印1000颗星的平均时间。

结果是:

Windows虚拟机:

  • 编译器:MSVC
  • 33554微秒

  • 编译器:GCC

  • 40787微秒

linux虚拟机:

  • 编译器:GCC
  • 39微秒

OSX物理机器:

  • 编译器:xcode C ++
  • 173微秒

首先想到的是,这可能是虚拟机的问题,但是由于linux虚拟机做得很快,我相信这可能是其他原因,我不知道。

任何想法或意见将不胜感激!

Solutions Collecting From Web of "为什么MSVC编译器比Linux上的gcc和Mac上的Xcode C ++编译器慢得多"