获取当前时间并且转化为字符串_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左右。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • JSONObject获取JSONArray转JSONObject获取某个属性值

    JSONObject获取JSONArray转JSONObject获取某个属性值StringhttpPost4Instream=http.httpPost4InstreamJSONObjectjsonbject=JSONObject.fromObject(httpPost4Instream);JSONArrayjsonArray=jsonbject.getJSONArray("stores");Stringstring=jsonArray.get…

  • 一个典型的晶体管开关电路

    一个典型的晶体管开关电路

    2021年12月17日
  • es6模板字符串_es6模板差值

    es6模板字符串_es6模板差值ES6模板字符串

  • jedispool释放连接_redis项目实例

    jedispool释放连接_redis项目实例1.下载redis,地址:https://download.csdn.net/download/rexueqingchun/103247192.设置redis密码,修改redis.windows.conf配置文件,去掉requirepassfoobared前面的注释  (注:foobared为默认密码,可以自定义密码,例如:123456)3.在redis目录中新建startup.bat,添加re…

  • drozer 渗透测试_什么是渗透

    drozer 渗透测试_什么是渗透安卓渗透测试工具——drozer安装使用教程一、环境准备二、安装三、连接使用

  • 面试题 垃圾分类_前端垃圾回收机制面试题

    面试题 垃圾分类_前端垃圾回收机制面试题一、垃圾回收对象JVM运行时的数据区包括程序计数器、栈、堆、方法区、本地方法栈其中程序计数器、栈和本地方法栈是和线程绑定在一起的,当创建了线程,就会申请内存,当线程结束的时候,想关的内存就会被销毁。方法区主要是类对象,类加载的时候就会申请这里的内存,“类卸载”操作实际上是很少会涉及到的。因此,垃圾回收机制主要回收的对象就是堆,并且垃圾回收释放内存,实际上是在以对象为单位进行释放,因为内存的申请是以对象为单位进行申请的,当整个对象的内存都不在使用时,即没有引用指向这个对象时,就可以将其进行释放二、垃圾

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

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