获取当前时间并且转化为字符串_python处理百万级数据时间

获取当前时间并且转化为字符串_python处理百万级数据时间linux 用户空间获得纳秒级时间ns【转】

大家好,又见面了,我是你们的朋友全栈君。

转自:https://www.cnblogs.com/kekukele/p/3662816.html

一、引言

我们在测试程序的性能的时候往往需要获得ns级的精确时间去衡量一个程序的性能,下面介绍下linux中用户空间获得ns级时间的方法

二、用户空间获得ns级时间

使用clock_gettime函数,函数原型如下:

    long sys_clock_gettime (clockid_t which_clock, struct timespec *tp);

    1.which_clock参数解释

      CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变

      CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响

      CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间

      CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间

    2.struct timespec结构

      

struct timespec
{
 time_t tv_sec;
 long int tv_nsec;
};

使用范例代码如下:

复制代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
   struct timespec time_start={0, 0},time_end={0, 0};
   clock_gettime(CLOCK_REALTIME, &time_start);
   printf("start time %llus,%llu ns\n", time_start.tv_sec, time_start.tv_nsec);
   clock_gettime(CLOCK_REALTIME, &time_end);
   printf("end   time %llus,%llu ns\n", time_end.tv_sec, time_end.tv_nsec);
   printf("duration:%llus %lluns\n", time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);
   return 0;
}
复制代码

 

编译命令:

gcc test.c -o test -lrt

运行结果:

./test
start time 1397395863s,973618673 ns
end   time 1397395863s,973633297 ns
duration:0s 14624ns

从运行结果可以看出 调用printf()函数一次需要15us左右。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107188.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • hashmap遍历方式_图的深度遍历

    hashmap遍历方式_图的深度遍历HashMap的遍历可以用entrySet();keySet()可以获得key,根据key可以用get(key)获取value;values()可以获取map里所有的值,返回的是一个Collection。      //entrySet      Mapmap1=newHashMap();;/*      Iterator>iterator1=

    2022年9月8日
  • 计算机为什么要用补码运算_补码运算溢出后怎么算

    计算机为什么要用补码运算_补码运算溢出后怎么算计算机为什么用补码运算使用补码,可以将符号位和数值域统一处理,从而简化运算规则、简化运算器的结构,提高运算速度;使减法运算转换为加法运算,进一步简化计算机中运算器的电路设计两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃,而这样计算仍然正确;采用补码表示还有另外一个原因,那就是为了防止0机器数有两个编码。原码和反码表示的0有两种形式+0和-0,而采用补码表示的时候,00000000是+0即0,10000000不再是-0而是-128这样,补码表示的数的范围就是-128~+127,不

    2022年9月22日
  • Python中字符串String去除出换行符(\n,\r)和空格的问题

    Python中字符串String去除出换行符(\n,\r)和空格的问题Python中字符串String去除出换行符和空格的问题(\n,\r)在Python的编写过程中,获取到的字符串进场存在不明原因的换行和空格,如何整合成一个单句,成为问题。方法:一、去除空格“·”代表的为空格  strip()"···xyz···".strip()#returns"xyz""···xyz···".lstrip()…

    2022年6月18日
  • 《可复制的领导力》思维导图读书笔记,提升职场竞争力[通俗易懂]

    《可复制的领导力》思维导图读书笔记,提升职场竞争力[通俗易懂]身在职场中的我们,很多人都为缺乏领导力而头痛,羡慕那些成功领导者所具备的领导力。但几乎所有人都认为领导力是一种感觉,是一门很深奥的学问,是经过许多年去锻炼出来的,是学不会的。王侯将相,宁有种乎?小编现在想告诉大家,其实领导力的方法与技巧,每个人都可以通过学习来掌握,不论是看书也好,看视频也罢。都是可以的。即便你不是领导,也同样需要领导力,因为这可以在社会彰显你的价值。下面通过MindMaster思维导图走进樊登老师的著作里,去学习和掌握领导力的一些方法与技巧。(注:本图由MindMaster导图

    2022年6月17日
  • latex 希腊字母输入「建议收藏」

    latex 希腊字母输入「建议收藏」数学公式离不开希腊字母,以下列出了LaTex中产生希腊字母的控制命令:  \alpha产生字符α;\beta产生字符β;\gamma产生字符γ;\delta产生字符δ;\epsilon产生字符ε;\zeta产生字符ζ;\eta产生字符η;\theta产生字符9;\iota产生字符ιt;\kappa产生字符κ;\1ambda产生字符λ;\mu产生字符μ;\xi产生字符ξ:\nu产生字符ν

    2022年10月13日
  • Changing Leisure Activities_register to do

    Changing Leisure Activities_register to dojsp: &lt;inputname="test"id="test"value=""class="validate[required,funcCall[myTest]]"&gt;   js:  不能使用ajax异步数据,可以参考:http://yuhaijunll.iteye.com/admin/blogs/1765620 functionmyTest…

    2022年10月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号