快速,跨平台的计时器?

dsi*_*cha 6 time garbage-collection d timer

我希望通过添加一些启发式来改进D垃圾收集器,以避免垃圾收集运行,这不会导致显着的释放.我想补充的一种启发式方法是GC每X时间不应运行一次以上(可能每秒一次左右).为此,我需要一个具有以下属性的计时器:

  1. 它必须能够以最小的开销获取正确的时间.调用core.stdc.time花费的时间大致相当于一个小的内存分配,因此它不是一个好的选择.

  2. 理想情况下,应该是跨平台(OS和CPU),以简化维护.

  3. 超高分辨率并不是非常重要.如果时间精确到1/4秒,这就足够了.

  4. 必须在多线程/多CPU环境中工作.x86 rdtsc指令不起作用.

编辑:普通的旧C功能clock()似乎足够快.但是,这里溢出是一个问题.在32位Windows和Linux上,clock_t定义为32位有符号整数.当它溢出时,它是否变为负数,或者该clock()函数是否使用额外的逻辑使其换算为零?如果它包装为零,那么这将成功.如果它包装为负数(也代表错误代码等),那么它将不起作用.

编辑#2:无论如何我尝试了启发式,使用clock()和忽略溢出问题,就像测试一样.它的表现很差,不值得进一步调查.

Vla*_*eev 3

理想情况下,应该是跨平台的(操作系统和 CPU),以简化维护。

我认为这会让您了解在标准 C 库中可以找到的任何内容。

也许是时钟