__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语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一 ...
随机推荐
- JavaScript 组数去重demo
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 关于用舞蹈链DLX算法求解数独的解析
欢迎访问——该文出处-博客园-zhouzhendong 去博客园看该文章--传送门 描述 在做DLX算法题中,经常会做到数独类型的题目,那么,如何求解数独类型的题目?其实,学了数独的构建方法,那么DL ...
- Calendar抽象类的使用
Calendar timeNow = Calendar.getInstance(); int year = timeNow.get(Calendar.YEAR); // 这里月是从0开始的,即0到11 ...
- Django1.11.7配置静态文件
Django配置静态文件分为三步 1.建文件夹 2.设置setting 3.页面引用 1.文件目录结构 在APP下新建static文件夹,将js和css文件放入文件夹 2.配置settings.py ...
- 3、Qt Project之Socket网络编程
Socket网络编程 Step1:首先完成整个界面的设计 <?xml version="1.0" encoding="UTF-8"?> <u ...
- 附001.kubectl介绍及使用
一 kubectl介绍 1.1 kubectl概要 kubectl控制Kubernetes集群管理器,使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序.使用k ...
- 使用pdfBox实现pdf转图片,解决中文方块乱码等问题
一.引入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox ...
- JDK 1.6 HashMap 源码分析
前言 前段时间研究了一下JDK 1.6 的 HashMap 源码,把部份重要的方法分析一下,当然HashMap中还有一些值得研究得就交给读者了,如有不正确之处还望留言指正. 准备 需要熟悉数组 ...
- scrapy 安装
windows 1.wheelpip install wheel2.lxmlhttp://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml3.PyOpensslhttp ...
- .ftl文件介绍
freemarker的文件一般以后缀ftl,ftl文件的头上要写<#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] /这样才能在ft ...