通常我们编写一个算法后,都很想知道它的时间复杂度,也就是他的运行速度.
测量算法的运算时间,一般需要采用多线程编程.
在网上找到一个有关的c#代码,可以参考一下.
新建一个类:HiPerfTimer
代码如下:
using System;using System.Runtime.InteropServices;using System.ComponentModel;using System.Threading;
namespace Win32{ internal class HiPerfTimer { [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceCounter( out long lpPerformanceCount);
[DllImport("Kernel32.dll")] private static extern bool QueryPerformanceFrequency( out long lpFrequency);
private long startTime, stopTime; private long freq;
// Constructor public HiPerfTimer() { startTime = 0; stopTime = 0;
if (QueryPerformanceFrequency(out freq) == false) { // high-performance counter not supported throw new Win32Exception(); } }
// Start the timer public void Start() { // lets do the waiting threads there work Thread.Sleep(0);
QueryPerformanceCounter(out startTime); }
// Stop the timer public void Stop() { QueryPerformanceCounter(out stopTime); }
// Returns the duration of the timer (in seconds) public double Duration { get { return (double)(stopTime - startTime) / (double) freq; } } }}
把这个类引入工程,应用方法如下:
HiPerfTimer pt = new HiPerfTimer();pt.Start(); //这里是要测试的算法的代码
...pt.Stop(); Console.WriteLine("Duration: {0} sec/n", pt.Duration);