欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#精確到納秒級(jí)別的計(jì)時(shí)器類實(shí)現(xiàn)代碼

 更新時(shí)間:2021年08月21日 11:03:21   作者:晨晞gg  
這篇文章主要介紹了C#精確到納秒級(jí)別的計(jì)時(shí)器類,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

主要用到了win32里面的QueryPerformanceCounter和QueryPerformanceFrequency兩個(gè)函數(shù)

文檔鏈接:https://docs.microsoft.com/zh-cn/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter

class NanoSecondTimer
    {

        [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;
        public NanoSecondTimer()
        {
            startTime = 0;
            stopTime = 0;
            if (QueryPerformanceFrequency(out freq) == false)
            {
                throw new Win32Exception();
            }
        }

        /// <summary>
        /// 開(kāi)始計(jì)時(shí)
        /// </summary>
        public void Start()
        {
            Thread.Sleep(0);
            QueryPerformanceCounter(out startTime);
        }

        /// <summary>
        /// 停止計(jì)時(shí)
        /// </summary>
        public void Stop()
        {
            QueryPerformanceCounter(out stopTime);
        }

        /// <summary>
        ///  返回計(jì)時(shí)器經(jīng)過(guò)時(shí)間(單位:秒)
        /// </summary>
        public double Duration
        {
            get
            {
                return (double)(stopTime - startTime) / (double)freq;
            }
        }
    }

QueryPerformanceFrequency這個(gè)函數(shù)會(huì)檢索性能計(jì)數(shù)器的頻率。性能計(jì)數(shù)器的頻率在系統(tǒng)啟動(dòng)時(shí)是固定的,并且在所有處理器上都是一致的。因此,只需在應(yīng)用初始化時(shí)查詢頻率,即可緩存結(jié)果。在運(yùn)行 Windows XP 或更高版本的系統(tǒng)上,該函數(shù)將始終成功,因此永遠(yuǎn)不會(huì)返回零。

下面是測(cè)試代碼:

NanoSecondTimer nanoSecondTimer = new NanoSecondTimer();
            nanoSecondTimer.Start();
            for (int i = 0; i < 100000; i++)
            {
                i++;
            }
            nanoSecondTimer.Stop();
            double time = nanoSecondTimer.Duration;

到此這篇關(guān)于C#精確到納秒級(jí)別的計(jì)時(shí)器類的文章就介紹到這了,更多相關(guān)C#計(jì)時(shí)器類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論