学习进程时间获取的笔记

使用clock和times来获取进程运行时间
源于linux系统编程手册
clock 用于获取CPU运行进程全部时间
times用于分开为用户CPU和系统CPU的运行时间
times的结构体
struct tms
在这里插入图片描述
sysconf 用于获取系统的配置
在这里插入图片描述

#include<stdio.h>
#include<time.h>
#include<sys/times.h>
#include<stdlib.h>
#include<unistd.h>
static void displayProcessTimes(const char *msg)
{
		struct tms t;
		clock_t clockTime;
		static long clockTicks = 0;
		if(msg != NULL )
		{
				printf("%s",msg);
		}

		if(clockTicks == 0)
		{
				clockTicks = sysconf(_SC_CLK_TCK);
				if(clockTicks == -1)
				{
						perror("sysconf");
						return ;
				}
		}

		clockTime = clock();
		if(clockTime == -1)
		{
				perror("clock");
				return ;
		}
		printf("clock() returns : %ld clocks-per-sec(%.2f secs)\n",(long)clockTime,
		(double)clockTime / CLOCKS_PER_SEC);

		if(times(&t) == -1)
		{
				perror("times\n");
				return ;
		}
		printf(" times() yields:user CPU=%.2f;system CPU:%.2f\n",
				(double)t.tms_utime / clockTicks,
				(double)t.tms_stime / clockTicks);
}

int main(int argc, char *argv[])
{
	int numCalls , j;
	
	printf("CLOCKS_PER_SEC = %ld sysconf(_SC_CLK_TCK)=%ld \n\n",(long)CLOCKS_PER_SEC,
	sysconf(_SC_CLK_TCK));//获取时间的脉冲数
	
	displayProcessTimes("At proram start:\n");
	
	numCalls = (argc > 1) ? atoi(argv[1]) : 100000000;
	
	for(j = 0 ; j < numCalls ; j++)
	{
			(void)getppid();
	}

	displayProcessTimes("After getppid() loop:\n");

	exit(EXIT_SUCCESS);

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值