我正在做微生物标准。我的代码看起来像这样
while(some condition){
struct timespec tps, tpe;
clock_gettime(CLOCK_REALTIME, &tps);
encrypt_data(some_data)
clock_gettime(CLOCK_REALTIME, &tpe);
long time_diff = tpe.tv_nsec - tps.tv_nsec;
usleep(1000);
}
但是,我放在usleep()中的睡眠时间实际上会影响我得到的观察到的time_diff。如果我使用上述时间上的骨架来测量此代码的执行,则我获得的时间分别为100US和1000US的〜1.8US到〜7U。为什么测量的时间随着睡眠时间在仪器块之外的时间而变化随着睡眠时间的变化而变化?
时间结果是多次运行的平均值。我正在使用Ubuntu 14.04来运行此代码。为了加密,我正在使用OpenSSL的AESGCM。
我知道这不是获得微观标准的最佳方法,但这不是这里的问题。
您是否禁用CPU缩放?
sudo cpupower frequency-set --governor performance
请参阅此处和此处。