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语言__测一段代码的运行时间的更多相关文章

  1. iOS测试一段代码的运行时间

    王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double delt ...

  2. C#计算一段代码的运行时间

    第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...

  3. __c语言__结构体、共用体、枚举__笔记

    2017-09-16 21:14:09 结构体,共用体,枚举 1.结构体 把不同的类型整合成一个有机的整体,以便于引用,这个类型就叫做结构体 1)结构体变量的定义方式(3种)和引用成员变量: 定义一个 ...

  4. __c语言__整型、实型的存储(十进制转二进制)

    float 和 double 类型数据在内存中的存储方法 无符号整型采用32位编码,带符号整型数采用1个符号位31位底数编码: 单精度数据采用了1位符号位,8位阶码,23位尾数的编码: 双精度数据采用 ...

  5. java中如何测试一段代码的运行时间

    一.以毫秒为单位.long startTime = System.currentTimeMillis(); //获取开始时间 doSomething(); //测试的代码段 long endTime ...

  6. 【转】 BSS段 数据段 代码段 堆栈 指针 vs 引用

    原文:http://blog.csdn.net/godspirits/article/details/2953721 BSS段 数据段 代码段 堆栈 (转+) 声明:大部分来自于维基百科,自由的百科全 ...

  7. 使用<pre>标签为你的网页加入大段代码

    在上节中介绍加入一行代码的标签为<code>,但是在大多数情况下是需要加入大段代码的,如下图: 怎么办?不会是每一代码都加入一个<code>标签吧,没有这么复杂,这时候就可以使 ...

  8. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  9. java中 synchronized 的使用,确保异步执行某一段代码。

    最近看了个有关访问网络url和下载的例子,里面有几个synchronized的地方,系统学习下,以下内容很重要,记下来. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一 ...

随机推荐

  1. luogu P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows

    题解: 二维凸包裸题 按照x坐标为第一关键字,y坐标为第二关键字排序 然后相邻判断叉积用单调队列搞过去 正反都做一次就好了 代码: #include <bits/stdc++.h> usi ...

  2. 构建简单的json树形菜单

    json结构: var Menu = [{ tit:"一级菜单", submenu:[{ tit:"二级菜单", url:"", func: ...

  3. pycharm创建python模板文件

    1.新建一个项目: 2.右键单击项目名称-->选择新建-->编辑模板文件 3.编辑模板文件保存 4.新建文件测试 至此不再重复添加头部信息了

  4. Codeforces 196E Opening Portals MST (看题解)

    Opening Portals 我们先考虑如果所有点都是特殊点, 那么就是对整个图求个MST. 想在如果不是所有点是特殊点的话, 我们能不能也 转换成求MST的问题呢? 相当于我们把特殊点扣出来, 然 ...

  5. 007 使用SpringMVC开发restful API五--异常处理

    一:任务 1.任务 Spring Boot中默认的错误机制处理机制 自定义异常处理 二:Spring Boot中的默认错误处理机制 1.目前 浏览器访问的时候, restful 接口主要是根据状态码进 ...

  6. 基于PySpark的网络服务异常检测系统 阶段总结(二)

    在上篇博文中介绍了网络服务异常检测的大概,本篇将详细介绍SVDD和Isolation Forest这两种算法 1. SVDD算法 SVDD的英文全称是Support Vector Data Descr ...

  7. Java 之 JavaScript (一)

    1.JavaScript a.定义:JavaScript 是脚本语言,是一种轻量级的编程语言 b.实现:①直接通过标签里面的onXX属性驱动js的执行 <input type="but ...

  8. 【python】web开发

    No1: hello.py def application(environ,start_response): start_response('200 OK',[('Content-Type','tex ...

  9. Django 学习第六天——Django模型基础第一节

    一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...

  10. the secrets

    prime time productions: my life had collepes arround me? i have worked myselft into exhaustion. my f ...