c++ - 如何执行用c++编写的程序的运行时间?

标签 c++ performance ctime time.h

我有代码生成 1-100 的随机数,并使用我在单独函数中已有的合并排序对它们进行排序。一切正常,但当我实现 clock();尝试获取运行时间,我总是得到零。我什至尝试过使用更大的数字,例如 10000,但耗时总是给我零。这是我的代码

int main() {
clock_t startTime;
clock_t endTime;
clock_t timePassed;

int array[100];
srand(time(NULL));
int n = sizeof(array) / sizeof(array[0]);
startTime = clock();
    for (int j = 0; j < 100; j++)
    {
        array[j] = rand() % 100+1;
        std::cout << array[j] << " ";
    }
    std::cout << "\n";
    MergeSort(array, n);

    std::cout << "After Merge Sort :" << std::endl;
    PrintArray(array, n);

    endTime = clock();
    timePassed = ((endTime - startTime) / CLOCKS_PER_SEC);
    std::cout << "\n" << timePassed;
}
return 0;
}

最佳答案

使用

double timePassed = (endTime - startTime) / static_cast<double>(CLOCKS_PER_SEC);

更高准确度的 B 计划:

#include <iostream>
#include <chrono>

// ...

auto start_time{ std::chrono::high_resolution_clock::now() };

// ... code you want to time

auto end_time{ std::chrono::high_resolution_clock::now() };

std::cout << std::chrono::duration_cast<std::chrono::seconds>(end_time - start_time).count() << ":";
std::cout << std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time).count() << ":";

// ...

关于c++ - 如何执行用c++编写的程序的运行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52241408/

相关文章:

c++ - 对两个对应的数组进行排序

javascript - 有关页面加载速度的专业建议

ctime 没有正确获取循环开始/结束的时间差

C++ - 'localtime' 此函数或变量可能不安全

Android 滑动菜单挂起 UI

c++ - 在 Windows 10 中将 CLOCKS_PER_SEC 重新定义为更高的数字

php - 将简单的 C++ 移植到 PHP 代码

c++ - 如何将图像从不规则矩形更改为矩形?

c++ - 无法将函数定义与类模板的现有声明相匹配

python - 简化python中的循环