為什麼 std::chrono::high_resolution_clock 在 Visual Studio 2012 中報告的解析度低於預期?
Nov 11, 2024 am 09:13 AMstd::chrono::high_resolution_clock 中的分辨率差異
在旨在測量std::cout 所用時間的測試程序中,輸出顯示與std::chrono::high_resolution_clock 預期的100 奈秒解析度始終存在較高偏差。相反,測量的持續時間範圍為 1 到 2 微秒。這種差異引發了對報告的分辨率和時間測量方法的準確性的疑問。
影響分辨率的因素
時鐘的分辨率,按其周期報告,是它可以測量的最小時間單位。雖然 Visual Studio 2012 包含高解析度時鐘,但不幸的是它的精度不足,通常表現出約 1 毫秒的解析度。這是由於 Visual Studio 2012 將 high_resolution_clock 重新定義為 system_clock,後者本身精確度較低。
Visual Studio 2012 的替代高解析度時鐘
解決為了克服這個限制,可以使用操作提供的QueryPerformanceCounter 函數來實現更準確的高解析度時鐘。 系統。下面提供的HighResClock 類別透過利用QueryPerformanceCounter 提供微秒精度的可靠時鐘來解決此問題:
struct HighResClock { typedef long long rep; typedef std::nano period; typedef std::chrono::duration<rep, period> duration; typedef std::chrono::time_point<HighResClock> time_point; static const bool is_steady = true; static time_point now() { LARGE_INTEGER count; QueryPerformanceCounter(&amp;count); return time_point(duration(count.QuadPart * static_cast<rep>(period::den) / g_Frequency)); } }; namespace { const long long g_Frequency = []() -> long long { LARGE_INTEGER frequency; QueryPerformanceFrequency(&amp;frequency); return frequency.QuadPart; }(); }
登入後複製
這種替代時鐘可以無縫整合到現有程式碼中,即使在Visual Studio 2012 的限制。
以上是為什麼 std::chrono::high_resolution_clock 在 Visual Studio 2012 中報告的解析度低於預期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)