__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语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一 ...
随机推荐
- 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡
题解: 网上有一种复杂的方法..好像复杂度并没有优势就没看 定义f[i]表示i的期望经过次数,f[i]=sigma{f[j]*p/q/du[j]}+(i==1); 然后高斯消元就可以了 最后求出来的f ...
- python之squid实现免费 IP代理 (windows win7 单机 本机 本地 正向代理 区分 HTTPS)
0.目录 1.思路2.windows安装3.相关命令行4.简单配置和初步使用5.问题:squid是否支持HTTPS6.问题:配置多个代理条目,相同ip不同port报错7.问题:根据代理请求区分HTTP ...
- day8.登陆注册简单实现
username = input('请输入注册的用户名:') password = input('请输入注册名的密码:') with open('list_of_info',mode='w',enco ...
- ip 命令
Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...
- Python学习(三十一)—— Django之路由系统
转载自:http://www.cnblogs.com/liwenzhou/p/8271147.html Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLc ...
- excel怎么样批量将unix时间戳转化为北京时间
https://jingyan.baidu.com/article/63acb44afb1e2561fcc17e3f.html 1.单元格属性改变日期 2.使用公式: =(A2+8*3600)/864 ...
- 012 pandas与matplotlib结合制图
这里以后再补充. 1.折线图
- Spring(四)使用注解注入Bean
注解简单介绍 是代码里面的特殊标记,使用注解完成功能. 注解写法@ 注解名称(属性名=属性值). 注解可以作用在类.方法.属性上面. 使用流程: 在ApplicationContext.xml中开启注 ...
- Effective前端2---加快页面打开速度
1.避免head标签JS阻塞 所有放在head标签里的JS和CSS都会阻塞页面渲染.如果这些CSS和JS需要记在时间比较久,中间页面会存在一个空白期,严重影响到用户体验. 例如以下代码:在head标签 ...
- lodash学习资料
二.Lodash Lodash是一个具有一致接口.模块化.高性能等特性的 JavaScript 工具库.它内部封装了诸多对字符串.数组.对象等常见数据类型的处理函数,其中部分是目前 ECMAScrip ...