zoukankan      html  css  js  c++  java
  • C# 测试代码运行时间

    (1)用Datatime和TmeSpan

    这个不说了,在要测量的代码前后加上2个DateTime.Now,2者相减,得到一个TmeSpan。

    DateTime d = DateTime.Now;

    for (int i = 0; i < 1000; i++)

    {

     ++i;

    }

    Console.WriteLine(DateTime.Now - d);

    (2)用Stopwatch,简单,明了,精确。

    // 使用 StopWatch 进行测量

    Stopwatch sw = new Stopwatch();

    sw.Start();

     

     for (int i = 0; i < 1000; i++) { ++i; }

     

    sw.Stop();

    Console.WriteLine(sw.Elapsed);

     

    StopWatch 几个关键属性和方法。 
    Elapsed :获取当前实例测量得出的总运行时间。在测试期间或者结束时均可获取。 
    IsRunning : 获取一个指示 Stopwatch 计时器是否在运行的值。  
    Start : 开始或继续测量某个时间间隔的运行时间。 多次调用 Start 前,需要使用 Reset 重置,否则会累加多次测量结果。 
    Stop : 停止测量某个时间间隔的运行时间。 
    Reset : 停止时间间隔测量,并将运行时间重置为零。

    (3)使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数,这个比较麻烦,还用到了Interop。

     

    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 < 500; i++)
            {
                //需要测试的模块
            }
    
            QueryPerformanceCounter(ref count1);
    
            count = count1 - count;
            result = (double) (count) / (double) freq;
    
            Console.WriteLine("耗时: {0} 秒", result);
            Console.ReadLine();
        }
    }
  • 相关阅读:
    软工5--结对2--四则运算生成器
    软工4——结对审查
    天数计算器
    翻转字符串
    位图排序
    软工 assignment 3 —— 求最大子数列之和
    剑指offer 面试题5.替换空格
    剑指offer 面试题4.二维数组中的查找
    剑指offer 面试题3.数组中重复的数字
    如何通过onenote发送博客到cnblog(博客园)
  • 原文地址:https://www.cnblogs.com/itecho/p/2434541.html
Copyright © 2011-2022 走看看