相同代码的运行时性能变化的原因

时间:2018-01-11 11:21:08

标签: c++ linux performance performance-testing

在运行我的C ++软件的一些基准测试时,我获得了以下图片:enter image description here

该图显示了软件一个刻度的执行时间(以纳秒为单位)。 每次都运行完全相同的刻度(一个数据点是一个刻度)。

在valgrind的模拟环境中进行测试时,每个tick之间没有差异,而且我没有clock_gettime可能做的其他系统调用。

我想了解什么会导致蜱似乎运行的两个“速度”。我禁用了英特尔CPU睡眠状态,这有很大帮助(在此之前我有4条这样的线),以及可能是异常点的原因。使用的调度程序是linux的FIFO调度程序。

一个有趣的观察结果是,滴答时间在9000和6700 ns这两个值之间交替变化;这里有一些数据点:

9022
6605
9170
6756
9126
6594
9102
6744
9016
6643
8950
6638
9047
6662

编辑: 只是在我的线程循环中执行此操作:

auto t0 = std::chrono::high_resolution_clock::now();
auto t1 = std::chrono::high_resolution_clock::now();
measure(std::chrono::duration_cast<std::chrono::nanoseconds>(t1 - t0).count()));

足以让我看到交替效果,但在100到150 ns之间。

0 个答案:

没有答案