__c语言__测一段代码的运行时间
2017-09-16 13:35:56
感觉很实用。
/**************************************
time ./a.out 命令所花费的real时间、user时间和sys时间。
real时间是指挂钟时间,也就是命令开始执行到结束的时间。
这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。 user时间是指进程花费在用户模式中的CPU时间,
这是唯一真正用于执行进程所花费的时间,
其他进程和花费阻塞状态中的时间没有计算在内。 sys时间是指花费在内核模式中的CPU时间,
代表在内核中执系统调用所花费的时间,
这也是真正由进程使用的CPU时间。
**************************************/ /**************************************
得到进程花费在用户模式中CPU执行时间.
其他进程和花费阻塞状态中的时间没有计算在内。
#include <time.h>
clock_t clock(void);
clock函数返回的是cpu时间,并不是秒数,
真正的一秒钟可能包含若干个CPU时间,
这个值通常是由宏CLOCKS_PER_SEC来定义,
表示一秒中有CLOCKS_PER_SEC这么多个cpu时间,
不同的编译器可能不同
**************************************/ /**************************************
得到命令开始执行到结束的时间。
这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
**************************************/
#include <stdio.h>
#include <sys/time.h>
int main(int argc , char *argv[])
{
long i,j,k,r;
long n = ; long a[][]={};
long b[][]={};
long c[][]={}; for(i = ; i < n ; i++)
{
for(j = ; j < n ; j++)
{
a[i][j] = i*j-i-j;
b[i][j] = i*j+i+j;
}
}
/************************************/
//定义两个结构体,来记录开始和结束时间
struct timeval start;
struct timeval end;
//记录两个时间差
double usedTime; //第一次获取时间,即表示开始记时
gettimeofday(&start,NULL);
for(k = ; k < n ; k++)
{
for(j = ; j < n ; j++)
{
r = a[j][k];
for(i = ; i < n ; i++)
{
c[j][i] += r * b[k][i];
}
}
}
//第二次获取时间,即表示结束记时
gettimeofday(&end,NULL);
/************************************/
//计算时间差,并打印
usedTime = (double)(end.tv_sec-start.tv_sec)+ ((double)(end.tv_usec-start.tv_usec))/;
printf("usedTime : %.4f s\n",usedTime); return ;
}
----------------------------------------------------------
#include <stdio.h>
#include <time.h>
int main(int argc , char *argv[])
{
long i,j,k,r;
long n = ; long a[][]={};
long b[][]={};
long c[][]={}; for(i = ; i < n ; i++)
{
for(j = ; j < n ; j++)
{
a[i][j] = i*j-i-j;
b[i][j] = i*j+i+j;
}
}
/******************得到本机时间年月日时分秒******************/
time_t rawTime;
struct tm *timeInfo;
time(&rawTime);
timeInfo = localtime(&rawTime);
printf("\n%s\n" , asctime(timeInfo));
/************************************************************/
double usedTime;
double clockSec = (double)CLOCKS_PER_SEC;
printf("CLOCKS_PER_SEC : %.4f ticks per second\n" , clockSec); clock_t start , finish;
start = clock();
printf("\n Start : %.4f ticks \n" , (double)start);
for(k = ; k < n ; k++)
{
for(j = ; j < n ; j++)
{
r = a[j][k];
for(i = ; i < n ; i++)
{
c[j][i] += r * b[k][i]; }
}
}
finish = clock();
printf(" Over : %.4f ticks \n\n" , (double)finish);
/************************************/
usedTime = (double)(finish-start);
usedTime = usedTime/clockSec;
printf("usedTime : %.4f s \n\n" , usedTime); return ;
}
__c语言__测一段代码的运行时间的更多相关文章
- iOS测试一段代码的运行时间
王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double delt ...
- C#计算一段代码的运行时间
第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...
- __c语言__结构体、共用体、枚举__笔记
2017-09-16 21:14:09 结构体,共用体,枚举 1.结构体 把不同的类型整合成一个有机的整体,以便于引用,这个类型就叫做结构体 1)结构体变量的定义方式(3种)和引用成员变量: 定义一个 ...
- __c语言__整型、实型的存储(十进制转二进制)
float 和 double 类型数据在内存中的存储方法 无符号整型采用32位编码,带符号整型数采用1个符号位31位底数编码: 单精度数据采用了1位符号位,8位阶码,23位尾数的编码: 双精度数据采用 ...
- java中如何测试一段代码的运行时间
一.以毫秒为单位.long startTime = System.currentTimeMillis(); //获取开始时间 doSomething(); //测试的代码段 long endTime ...
- 【转】 BSS段 数据段 代码段 堆栈 指针 vs 引用
原文:http://blog.csdn.net/godspirits/article/details/2953721 BSS段 数据段 代码段 堆栈 (转+) 声明:大部分来自于维基百科,自由的百科全 ...
- 使用<pre>标签为你的网页加入大段代码
在上节中介绍加入一行代码的标签为<code>,但是在大多数情况下是需要加入大段代码的,如下图: 怎么办?不会是每一代码都加入一个<code>标签吧,没有这么复杂,这时候就可以使 ...
- 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)
好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...
- java中 synchronized 的使用,确保异步执行某一段代码。
最近看了个有关访问网络url和下载的例子,里面有几个synchronized的地方,系统学习下,以下内容很重要,记下来. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一 ...
随机推荐
- 【转载】WIN7访问共享:0x80070035 找不到网络路径解决方法
转载:http://blog.chinaunix.net/uid-12372814-id-3518571.html 昨天刚装WIN7系统,今天早上准备访问服务器安装些软件,结果出现网络错误,提示Win ...
- 解决 Ionic 浏览器跨域问题
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...
- Loadrunner和JMeter并发对比
今天在项目中测试发现,其实LR才是实际意义上的并发测试,JMeter不算并发 记录用户登录日志: LR脚本: 1.登录操作放在init初始化中,用5个虚拟用户并发测试:
- JQuery函数大全
$(”p”).addClass(css中定义的样式类型); 给某个元素添加样式 $(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给某个元素添加属性/ ...
- BZOJ2084 [Poi2010]Antisymmetry Manachar
题目传送门 - BZOJ2084 题解 对于一个0我们把它看作01,1看作10,然后只要原串中的某个子串可以通过这两个变换成为回文串就可以满足条件了. 对于转换过的串,Manachar随便弄几下就可以 ...
- HDU2853 Assignment KM
原文链接http://www.cnblogs.com/zhouzhendong/p/8284105.html 题目传送门 - HDU2853 题意概括 (来自谷歌翻译) 题解 这是一道好题. 我们首先 ...
- BZOJ3772 精神污染 主席树 dfs序
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3772 题意概括 给出一个树,共n个节点. 有m条互不相同的树上路径. 现在让你随机选择2条路径,问 ...
- P1373 小a和uim之大逃离 二维dp
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- 012 pandas与matplotlib结合制图
这里以后再补充. 1.折线图
- eclipse tomcat报Several ports(8005 8080 8009)端口被占用问题解决方案
在启动tomcat的时候eclipse突然报错 Several ports (8005,8080,8009) required by Tomcat v6.0 Server at localhost a ...