使用clock_getTime()发行
usleep with clock_gettime() issue
我正在做微生物标准。我的代码看起来像这样
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
请参阅此处和此处。
相关文章:
- 在 c++ 中使用发行版
- RtMidIn在发行版c++中找不到端口
- <random> 尽管不是常量,但所有发行版都是线程安全的吗?
- Qt安装程序框架:检测是否安装了VC++可再发行组件
- 如何实现自己的生成器以与 std 发行版一起使用
- VC142 和 2019 可再发行组件包与 VC141 的比较
- 哪个版本(调试/发行 - 未取代/优化)更好地研究C 与组件进行比较
- 调试确定在发行版中会有什么作用
- VS 2013 和 VS 2015 的不同C++可再发行 DLL
- C 开发人员如何在发行版中捕获程序化错误
- boost :: container :: flat_multimap在OSX/Appleclang上以发行模式崩溃
- circle类和班级成员的打印向量发行
- Windows C 上的getTime ofday行为
- 链接列表发行了多个参数
- ifstream读取二进制文件在发行模式下工作,但在调试模式下不使用
- 将GCC版本升级到发行版附带的版本以外的版本是否有任何问题
- 如何编译适用于较旧 Linux 发行版的二进制文件
- C/C++:是否可以将 Eclipse 项目设置配置为接受 void 指针而不对所有 Linux 发行版进行强制转换
- 可视C++可再发行组件下载特定版本
- 使用clock_getTime()发行