当前位置:  编程技术>.net/c#/asp.net

C#计算代码执行时间的方法

    来源: 互联网  发布时间:2014-10-17

    本文导语:  最近遇到一个模块其执行时间非常短,但是调用频率非常高。精确计算其运算时间对于提高程序整体效率来说非常重要。 在我刚刚接触.Net时,也曾经想要测试一下自己写的程序的运行时间,当时我使用的是将两个DateTime.Now相...

最近遇到一个模块其执行时间非常短,但是调用频率非常高。精确计算其运算时间对于提高程序整体效率来说非常重要。

在我刚刚接触.Net时,也曾经想要测试一下自己写的程序的运行时间,当时我使用的是将两个DateTime.Now相减的笨方法,呵呵。后来知道使用Environment.TickCount,对于一般的测试来说就足够了。但是它对于高精度测试就没什么办法,经常是返回个0了事。对于高精度测试我们应当使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。通过它们可以获得比Environment.TickCount更高的精确度。实际上Environment.TickCount就是在调用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。

下面是我使用的代码:

代码如下:

using System;

class Class1
{
 [System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
 static extern bool QueryPerformanceCounter(ref long count);

 [System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
 static extern bool QueryPerformanceFrequency(ref long count);

 [STAThread]
 static void Main(string[] args)
 {
 long count = 0;
 long count1 = 0;
 long freq = 0;
 double result = 0;

 QueryPerformanceFrequency(ref freq);
 QueryPerformanceCounter(ref count);

 //需要测试的模块

 QueryPerformanceCounter(ref count1);
 count = count1-count;
 result = (double)(count)/(double)freq;

 Console.WriteLine("耗时: {0} 秒", result);
 Console.ReadLine();
 }
}

这样能够得到非常精确的结果。但是模块每次运行的时间总会有些误差,而当计算非常精确的时候,这些运行时间的误差也显得比较明显了。为此我对其进行循环多次测试使其误差平均化,通过多次测试的结果来进行执行效率的分析。

代码如下:

using System;

class Class1
{
 [System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
 static extern bool QueryPerformanceCounter(ref long count);

 [System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
 static extern bool QueryPerformanceFrequency(ref long count);

 [STAThread]
 static void Main(string[] args)
 {
 long count = 0;
 long count1 = 0;
 long freq = 0;
 double result = 0;

 QueryPerformanceFrequency(ref freq);
 QueryPerformanceCounter(ref count);

 //开始的时候没有这层循环,所得数据浮动很大,添加这层循环来使得结果更加平均
 for (int i=0; i


    
 
 

您可能感兴趣的文章:

  • C#递归实现显示文件夹及所有文件并计算其大小的方法
  • C#根据年月日计算星期几的函数小例子
  • C#获取计算机名,IP,MAC信息实现代码
  • C#由当前日期计算相应的周一和周日的实例代码
  • C#计算两个文件的相对目录算法的实例代码
  • C#计算两个时间差的方法代码分享
  • c#入门之实现简易存款利息计算器示例
  • C#中计算时间差中的小数问题解决
  • C#和SQL实现的字符串相似度计算代码分享
  • c#日期间隔计算示例
  • c# DateTime常用操作实例(datetime计算时间差)
  • C#通过经纬度计算2个点之间距离的实现代码
  • C#中控制远程计算机的服务的方法
  • 基于Docker容器的云计算平台搭建实战 iis7站长之家
  • 计算php脚本执行时间的示例代码
  • 一个小问题,JAVA中计算某个过程的执行时间,回答了马上给分,10分钟内响应啊
  • php计算当前程序执行时间示例
  • php计算当前程序执行时间
  • php计算代码执行时间的二种方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php计算日期相差天数(日期计算)代码
  • python 简易计算器程序,代码就几行
  • 怎样计算源代码大小?
  • php 质数计算代码 PHP筛选法求质数
  • 经典sql代码--逐行计算、逐行递延、逐行更新
  • java阶乘计算获得结果末尾0的个数代码实现
  • php根据身份证号码计算年龄的实例代码
  • VC++简单实现关机、重启计算机实例代码
  • php按比例计算图片大小的代码
  • 简单小代码:不用计算、不用位操作来实现 加 1
  • 经典sql代码--班级考试人数大于10、班级最低分在50分以上、计算机学院、班级平均分从高到低前10名
  • 用sql实现18位身份证校验代码分享 身份证校验位计算
  • Java计算几何图形面积的实例代码
  • 电脑开机时间的计算代码
  • PHP计算时间差的示例代码
  • mysql 字符串长度计算实现代码(gb2312+utf8)
  • sql server 计算生日所属的星座的代码
  • C语言小程序 计算第二天日期示例代码
  • sqlserver 计算两个日期之间相差的工作天数的代码
  • php权重计算方法代码分享
  • lbs基于位置服务(Location Based Service)中如何计算二点距离
  • Java计算机代数计算工具 Symja
  • 基于Docker容器的云计算平台搭建实战
  • rsync客户端如何从远程计算机上传输多个文件到本地计算机?
  • 云计算之Docker容器技术如何落地?
  • 可信计算你知道嘛?红旗的可信计算你知道嘛?
  • numpy官方下载安装以及numpy详细使用教程(Python科学计算)
  • 根据身份证号码计算出生日期、年龄、性别(18位) 根据入职时间计算工龄。
  • 求救:配置samba后,在Win9x计算机上能搜索到Linux计算机,但网上邻居里处看不到,这是为什么?
  • 计算机代数系统 Maxima
  • Android 房贷计算器 houseloan




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3