测试算法的时间复杂度

    技术2022-05-11  75

    通常我们编写一个算法后,都很想知道它的时间复杂度,也就是他的运行速度.

    测量算法的运算时间,一般需要采用多线程编程.

    在网上找到一个有关的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);

     

    最新回复(0)