首页 > 系统相关 >测试linux代码运行时间

测试linux代码运行时间

时间:2023-09-20 22:12:06浏览次数:43  
标签:gettid nTimeVal unsigned long 代码运行 线程 测试 linux include

1. 前置知识

    (1)gettid 内核给线程(轻量级进程)分配的进程id,全局(所有进程中)唯一;
    (2)pthread_self()是在用户态实现的,获取的是相对于进程的线程控制块的首地址,只是在当前进程空间中是唯一的。不能保证同一进程先后多个线程具有不同的id。(当前一个线程结束其生命周期,进程又新创建了一个线程,那么该线程ID可能会使用消亡线程的ID)。

    (3)struct timespec

            {
                __time_t tv_sec; /* 秒数 long int */
               long tv_nsec; /* 纳秒数*/
            };

2. 代码

#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include<sys/syscall.h>

/* 没有gettid函数,我们可以自己封装一下 */
pid_t gettid()
{
    return syscall(SYS_gettid);   
} 

/* 获取时间 */
static unsigned long long GetTickMs()
{
    unsigned long long nTimeV[2] = {0};
    struct timespec nTime;                  //linux中用的时间结构
    clock_gettime(CLOCK_MONOTONIC,&nTime);   //CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响
    nTimeV[0] = nTime.tv_sec * 1000;        //转为ms
    nTimeV[1] = nTime.tv_nsec / 1000000;    //转为ms
    return (nTimeV[0] + nTimeV[1]);         //返回当前的时间是多少 ms
}

int main()
{
   unsigned long long nTimeVal[2] = {0};
   nTimeVal[0] = GetTickMs();

  for(int i = 0; i < 10000000; i++)
  {
  
  }

   nTimeVal[1] = GetTickMs();
   printf("Thread pid:%u, tid:%u, spend: %lldms \n", (unsigned int)getpid(), (unsigned int)gettid(), nTimeVal[1]- nTimeVal[0]);

   return 0;
}

 

标签:gettid,nTimeVal,unsigned,long,代码运行,线程,测试,linux,include
From: https://www.cnblogs.com/dkhlaojogo/p/17718572.html

相关文章

  • Linux Namespace
    1LinuxNamespace概述Namespace是对全局系统资源的一种封装隔离,使得处于不同namespace的进程拥有独立的全局资源,改变一个namespace中的系统资源只会影响当前namespace里的进程,对其他namespace中的进程没有影响。1.1Linux内核支持的namespaces目前,Linux内核里面实现了7种不同类型的......
  • Metasploitable-Linux靶机配置
    Metasploitable和kali是课上下载好的。直接打开进入欢迎界面用默认账号登录了之后,修改root密码(sudopasswdroot),登录root账号,查看本机IP(ifconfig)切换到kali,把kali的IP改为192.168.72.129,且能ping通192.168.72.131在kali的浏览器中输入靶机的IP,可以看到靶机的界面......
  • 使用Jest测试接口时间
    引言在开发和测试过程中,我们经常需要对接口的性能进行评估和优化。一个重要的指标是接口的执行时间。本文将介绍如何使用Jest来测试接口的执行时间,并提供示例代码。Jest简介Jest是一个流行的JavaScript测试框架,广泛应用于前端和后端的单元测试、集成测试和性能测试。它简单易用......
  • 自动化测试系列:接口自动化测试框架--05通过邮件发送测试结果的封装
    From: https://mp.weixin.qq.com/s/3w9GT2TYKIhrKCi36-DYRw---------------------------------------------------------------------------------------框架功能介绍1.自动整理接口测试用例:只需使用抓包工具,将需要接口请求另存为HAR文件,执行har2excel.bat即可自动生成接口请......
  • linux中grep与find的区别,Linux三剑客【grep、sed和awk】
    在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)......
  • linux第四周技术博客
    这周我们学习了Linux的文件的操作之前我们已经在/home目录中创建了/swxy目录我们首先来学习touch命令,用户可以通过touch命令来创建一个空白文件,也可以设置文件属性cd/home/swxytouchabc.txtecho‘abc'>>abc.txt我们可以看到在swxy这个目录中已经创建了abc.txt这个文件,......
  • 1-Linux操作系统 的介绍和安装教程
    一、Linux的介绍1)常见的操作系统Windows,它微软公司开发的一款桌面操作系统(闭源系统)。版本有dos、win98、winNT、winXP、win7、winvista、win8、win10。服务器操作系统:winserver2003、winserver2008、winserver2012。Mac,苹果公司开发的一款操作系统(闭源系统),目前最......
  • Windows下FFMPEG调用测试(解码264)
    #include<stdio.h>#include<stdlib.h>#include<string.h>extern"C"{#include<libavcodec/avcodec.h>charav_error[AV_ERROR_MAX_STRING_SIZE]={0};#defineav_err2str(errnum)av_make_error_string(av_error,AV_ERROR......
  • linux网络配置
    linux网络配置一:网络配置的相关概念1:网关网关就是连接不同网段的,可以让不同网段的主机进行通信,就相当于是一个网段鹅出口,必须通过这个出口出去,才能与外界进行通信,在linux中有默认的网关,NAT模式中默认的网关就是以.2结尾比如Ip为192.168.10.10它的网关就是192.168.10.2......
  • 使用openssl创建ssl证书,用于测试https服务
    一个web站点要对外提供https服务就需要ssl证书,ssl证书可以从云服务厂商那里购买,通常也能申请到免费的,但是如果只是为了测试,则可以使用openssl来创建ssl证书。下面是完整的生成过程:第一步:创建私钥opensslgenrsa-outserver.key2048第二步:创建签名请求文件opensslreq-new-key......