Прошедшее время C ++ = 0 - PullRequest
0 голосов
/ 28 мая 2020

У меня есть код, написанный на C ++ в Visual Studio:

    auto start = std::chrono::high_resolution_clock::now();
    result = function(-1, 1, 9999999);
    auto end = std::chrono::high_resolution_clock::now();

    double time_taken = chrono::duration_cast<chrono::microseconds>(end - start).count();
    time_taken *= 1e-6;
    std::cout << "result: " << result << "time : " << fixed << time_taken << setprecision(6) << " sec" << endl;

Проблема: я запускаю код в режиме Release, и time_taken всегда равно 0. Когда я переключаюсь в режим отладки time_taken составляет от 1 до 2 секунд. Я пробовал разными способами определить время, но time_taken всегда равно 0. Как это исправить? Заранее благодарим за помощь!

1 Ответ

0 голосов
/ 28 мая 2020

Видимо не хватает разрешения часов. Или функция была частично или полностью оптимизирована.

Обычно профилировать небольшие функции нетривиально.

Одна вещь, которую вы должны сделать, - это вызвать его много раз и измерить время всего запуска, а затем разделить это время на количество вызовов.

Также убедитесь, что функция действительно полностью вычисляется во время выполнения, путем обработки результата в изменчивой переменной и получения входных данных из изменчивых переменных.

...