标题:clock_gettime() 用来测量处理时间 ( struct timespec )
只看楼主
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
 问题点数:0 回复次数:0 
clock_gettime() 用来测量处理时间 ( struct timespec )
没什么难理解的地方, 混个脸熟,主要就是看diff() 函数是怎样计算差值的
用clock_gettime() 处理前调用一次,
处理后调用一次来计算差值
程序代码:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

struct timespec diff( struct timespec start, struct timespec end);

int main(void) {

    struct timespec start, end, result;

    int temp, i;

    /*开始调用一次*/
    
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);

    for( i = 0; i < 242000000; i++)

        temp += temp;
    
    /*结束调用一次*/
    
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);

    result = diff( start, end);

    printf("Process time: %lu tv_sec, %lu tv_nsec\n", result.tv_sec, result.tv_nsec);

}    

struct timespec diff( struct timespec start, struct timespec end) {

    struct timespec temp;
    
    /*这种情况下高位借1秒给tv_nsec*/

    if( ( end.tv_nsec - start.tv_nsec ) < 0) {

        temp.tv_sec = end.tv_sec - start.tv_sec - 1;

        temp.tv_nsec = 1000000000 + end.tv_nsec - start.tv_nsec;
    }
    else {
        temp.tv_sec = end.tv_sec - start.tv_sec; 

        temp.tv_nsec = end.tv_nsec - start.tv_nsec;
    }

    return temp;

}


用 gcc  编译的时候加上  -lrt 选项

[ 本帖最后由 madfrogme 于 2012-8-30 17:40 编辑 ]
搜索更多相关主题的帖子: include start result 计算 
2012-08-30 11:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-380342-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.482823 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved