系统调用及访存时间测试

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>

long long ustime(void) {
    struct timeval tv;
    long long ust;

    gettimeofday(&tv, NULL);
    ust = ((long)tv.tv_sec)*1000000;
    ust += tv.tv_usec;
    return ust;
}


int main()
{
    unsigned long ulCount = 0;
    long long t1,t2,diff;
        int pid;
     struct timeval tv;


    t1 = ustime();
    while(1)
    {
        ulCount ++;
        pid = getpid();       //树莓派上执行时间在1100ns、这个有些执行4-10ns,原因是不同版本的glibc对这个取到的值有缓存优化
        (void)gettimeofday(&tv, NULL);  //树莓派上执行时间在70ns、intel xeon E5-4627 v3上约35ns
        if ((ulCount&0xFFFFF)==0)
        {
            t2 = ustime();
            diff = t2-t1;
            printf("send count %lu, diff gettimeofday %lld\n", ulCount, diff);
            //usleep(10*1000);
            t1 = ustime();
        }
    }

    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值