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猎豹及其在隐语中的实现
1394 1
|
分布式计算 Ubuntu Hadoop
百度搜索:蓝易云【Ubuntu搭建全分布式Hadoop】
请注意,以上只是概述,并不包含详细的步骤和指令。搭建全分布式Hadoop是一个复杂的过程,需要对Hadoop的架构和配置有深入的理解,并熟悉Linux系统管理。建议在搭建全分布式Hadoop之前,先学习相关知识并查阅官方文档和教程,以确保正确搭建和配置Hadoop集群。
130 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协议进行通信。
2167 0
|
C++
C++代码来计算一个点围绕另一个点旋转45度后的坐标
C++代码来计算一个点围绕另一个点旋转45度后的坐标
273 0
|
SQL 缓存 Java
Hive 之 UDF 运用(包会的)
Hive的UDF允许用户自定义数据处理函数,扩展其功能。`reflect()`函数通过Java反射调用JDK中的方法,如静态或实例方法。例如,调用`MathUtils.addNumbers()`进行加法运算。要创建自定义UDF,可以继承`GenericUDF`,实现`initialize`、`evaluate`和`getDisplayString`方法。在`initialize`中检查参数类型,在`evaluate`中执行业务逻辑。最后,打包项目成JAR,上传到HDFS,并在Hive中注册以供使用。
708 2
|
存储 JSON 关系型数据库
MySQL JSON 类型:功能与应用
MySQL JSON 类型:功能与应用
|
安全 网络协议 数据安全/隐私保护
网络技术基础(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
302 0
EMQ
|
传感器 算法 网络协议
MQTT 客户端自动重连最佳实践|构建可靠 IoT 设备连接
本文介绍在MQTT客户端代码实现过程中,自动重连逻辑设计的重要性与示例,帮助读者设计更为合理的重连代码,构建更加稳定可靠的物联网设备连接。
EMQ
1542 0
MQTT 客户端自动重连最佳实践|构建可靠 IoT 设备连接