我是不是太快了,数不清妖孽
Am I too fast to count jiffies?
我在不同的数据库系统上做了一些本地实验。我在执行查询之前和之后从/proc/status
收集(汇总)CPU 信息。差异应该告诉我查询运行时的抖动或USER_HZ的数量。但是当(根据clock_gettime()
)查询的运行时低于0.001 seconds
时,差异为零。这是为了快速利用 CPU 信息还是我错过了其他东西?
从
Linux 内核 2.6.0 开始,一个 jiffy 是 1/250 秒,即 0.004 秒 [参见 time(7)]。你永远不会得到比这更小的分辨率。
我建议您使用 rdtsc
指令,该指令可能作为编译器内部函数提供。此值每 1 个 CPU 时钟周期递增一次,因此通过除以频率,您可以获得经过的时间量。您也可以使用内联程序集实现它。
检查/proc/status
实际上有点荒谬,因为打开文件描述符并读取内容实际上可能会比执行查询花费更长的时间。 rdtsc
要可靠得多。
相关文章:
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- 在 C++17 中的命名空间和子命名空间中重载运算符是不明确的
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- GDB 断点在 Mac 上是不准确的
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 如果我使用malloc()而不是堆栈数组,OpenGL不会渲染对象
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- 具有多维数组的索引范围之外的索引是不确定的
- 合并排序 - 返回新数组,而不是将合并的数组复制到输入数组
- 如果我自己不分配数组元素,数组元素的值是多少
- 将行中的字段从textfile中更改为存储数组,而不是重新编写文件
- 我不能在不使用指针的情况下返回 2d 数组!我正在制作一个井字游戏类型游戏,这是我的向上移动功能
- C++递减单字节(易失性)数组的元素不是原子!为什么?(还有:如何在Atmel AVR mcus/Arduino中强制原
- 数组下标不是整数,尽管被声明为 int
- 面向对象C++帮助?出于某种原因,对象变量的输出返回数值数组位置而不是实际值
- 我是不是太快了,数不清妖孽
- 在类中不定义静态数组大小是不是很糟糕--而是让它自动缩放
- c++/cli windows窗体在vs2012中,对象数组是不可能的