Windows — Почему компилятор MSVC работает медленнее, чем gcc в Linux и компилятор Xcode C ++ на Mac

Я не мог понять, почему время выполнения следующего фрагмента кода значительно различается на виртуальной машине 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 сделала это довольно быстро, я полагаю, что, возможно, это могут быть и другие причины, которых я не знаю.

Любые мысли или комментарии будут высоко оценены!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]