小编Ale*_*ini的帖子

bash内置时间命令的精度是多少?

我有一个脚本,使用bash builtin命令测量程序的执行时间time.

我试图理解这个命令的精度:据我所知它以毫秒为单位返回精度,但它使用的getrusage()函数返回一个以微秒为单位的值.但是阅读本文,实际精度仅为10毫秒,因为getrusage采样时间取决于刻度(= 100Hz).这篇论文真的很老了(它提到Linux 2.2.14在Pentium 166Mhz上运行,内存为96Mb).

time仍然使用getrusage()100赫兹蜱或者是在现代系统更精确?

测试机器正在运行Linux 2.6.32.

编辑:这是一个稍微修改过的版本(也应该在老版本的GCC上编译)的muru代码:修改变量'v'的值也改变度量之间的延迟以便发现最小粒度.大约500,000的值应该在相对较新的cpu上触发1ms的更改(第一版i5/i7 @~2.5Ghz)

#include <sys/time.h>
#include <sys/resource.h>
#include <stdio.h>

void dosomething(){
    long v = 1000000; 
        while (v > 0)
          v--;
}

int main()
{
    struct rusage r1, r2;
    long t1, t2, min, max;
    int i;

    printf("t1\tt2\tdiff\n");

    for (i = 0; i<5; i++){
        getrusage(RUSAGE_SELF, &r1);
        dosomething();
        getrusage(RUSAGE_SELF, &r2);

        t1 = r1.ru_stime.tv_usec + r1.ru_stime.tv_sec*1000000 + r1.ru_utime.tv_usec + r1.ru_utime.tv_sec*1000000;
        t2 …
Run Code Online (Sandbox Code Playgroud)

linux bash performance time

4
推荐指数
1
解决办法
389
查看次数

标签 统计

bash ×1

linux ×1

performance ×1

time ×1