clock_gettime测代码运行时间

简介:
//函数原型:
//	long clock_gettime (clockid_t which_clock, struct timespec *tp);
//参数列表:
//	CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变。
//	CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响
//	CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间
//	CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间
//返回值:
//	0:成功,-1:错误,在errno中保存错误代码


//目的:测代码运行时间

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> 
#include <errno.h>

void diff(struct timespec *start, struct timespec *end, struct timespec *interv)
{
	if((end->tv_nsec - start->tv_nsec) < 0)
	{
		interv->tv_sec = end->tv_sec - start->tv_sec-1;
		interv->tv_nsec = 1000000000 + end->tv_nsec - start->tv_nsec;
	}else
	{
		interv->tv_sec = end->tv_sec - start->tv_sec;
		interv->tv_nsec = end->tv_nsec - start->tv_nsec;
	}
	return;
}

void curr_time(struct timespec *time)
{
	clock_gettime(CLOCK_REALTIME, time);
}

int main()
{
	struct timespec start, end, interv;

	curr_time(&start);
	//do something here
	curr_time(&end);
	diff(&start, &end, &interv);
	printf("cost time nsec %ld.\n",interv.tv_sec * 1000000000 + interv.tv_nsec);
}

目录
相关文章
|
机器学习/深度学习 安全 算法
技术焦点篇|Cheetah猎豹及其在隐语中的实现
技术焦点篇|Cheetah猎豹及其在隐语中的实现
1445 1
|
分布式计算 Ubuntu Hadoop
百度搜索:蓝易云【Ubuntu搭建全分布式Hadoop】
请注意,以上只是概述,并不包含详细的步骤和指令。搭建全分布式Hadoop是一个复杂的过程,需要对Hadoop的架构和配置有深入的理解,并熟悉Linux系统管理。建议在搭建全分布式Hadoop之前,先学习相关知识并查阅官方文档和教程,以确保正确搭建和配置Hadoop集群。
144 0
|
物联网 Java Linux
Linux安装与配置Eclipse Paho库:实现MQTT通信
Eclipse Paho是一个开源的MQTT(Message Queuing Telemetry Transport)实现,提供了多种编程语言的客户端库,包括C、C++、Java、Python等。在Linux系统中,通过安装和配置Eclipse Paho库,我们可以方便地实现MQTT通信功能。本文将详细介绍在Linux系统中安装和配置Eclipse Paho库的步骤,以便于开发者在物联网项目中使用MQTT协议进行通信。
2334 0
|
C++
C++代码来计算一个点围绕另一个点旋转45度后的坐标
C++代码来计算一个点围绕另一个点旋转45度后的坐标
315 0
|
SQL 缓存 Java
Hive 之 UDF 运用(包会的)
Hive的UDF允许用户自定义数据处理函数,扩展其功能。`reflect()`函数通过Java反射调用JDK中的方法,如静态或实例方法。例如,调用`MathUtils.addNumbers()`进行加法运算。要创建自定义UDF,可以继承`GenericUDF`,实现`initialize`、`evaluate`和`getDisplayString`方法。在`initialize`中检查参数类型,在`evaluate`中执行业务逻辑。最后,打包项目成JAR,上传到HDFS,并在Hive中注册以供使用。
758 2
|
存储 JSON 关系型数据库
MySQL JSON 类型:功能与应用
MySQL JSON 类型:功能与应用
|
算法 搜索推荐 安全
C# | 上位机开发新手指南(八)加密算法——AES
AES——这是在加密算法中相当重要的一种加密方式! 虽然这个世界上已经存在了非对称加密算法(比如RSA、ECC等),但是在对称加密算法中,AES的地位依然相当重要。与非对称加密算法不同,对称加密算法使用的是相同的密钥对数据进行加密和解密,因此其加密和解密速度更快,而且更加高效。而在对称加密算法中,AES是目前最安全、最可靠的加密算法之一,其加密强度和运行效率都非常高。因此,无论是在个人计算机、移动设备,还是在服务器和云计算等领域,AES都被广泛应用于数据的加密和解密过程中。
740 0
C# | 上位机开发新手指南(八)加密算法——AES
|
Ubuntu Unix Linux
阿里云服务器镜像种类区别与选择参考
阿里云服务器镜像(也就是云服务器的操作系统)有公共镜像、自定义镜像、共享镜像、镜像市场、社区镜像可选,对于新手用户来说,不知道他们之间的区别,因此往往不知道如何选择,下面我们来看看他们之间的区别就知道如何选择了。
2383 0
阿里云服务器镜像种类区别与选择参考
|
安全 网络协议 数据安全/隐私保护
网络技术基础(18)——PPP与PPPoE协议
【3月更文挑战第5天】本文介绍了广域网的基本架构和PPP协议。广域网涉及CE(用户边缘设备)、PE(服务提供商边缘设备)和P(服务提供商设备),其中CE为企业出口,PE类似光猫,P为运营商内部设备。PPP是数据链路层协议,用于点到点连接,提供PAP和CHAP安全认证,并通过LCP和NCP协商链路和网络层参数。PPP协商包括链路层、认证(可选)和网络层三个阶段。PPPoE协议结合了PPP和以太网优点,用于以太网上进行PPP认证和计费,其会话建立包含发现、会话和终结阶段。配置PPP或PPPoE时,需在对应接口设置账号密码和认证方式。
|
运维 Linux 开发工具
Centos运维之安装.Net Core SDK
Centos运维之安装.Net Core SDK
318 0