簡體   English   中英

性能差異調試與發布

[英]Performance difference Debug vs Release

我發現各種來源表明,與Visual Studio的調試和發行版本之間幾乎沒有性能差異。

我正在使用Visual Studio 2015,並編寫了一個事件驅動的狀態機框架。 在我進行了第一次性能測試后,a被撞了,因為該框架每秒僅進行約13.000次狀態切換。

但是,一旦將其編譯為發行版,我每秒就會獲得150萬個狀態切換。 那對我來說是一個巨大的增長,但是我無法解釋它的來源。

可悲的是,我不能共享我的代碼,因為它屬於我的公司。

但是我發現,這樣的for循環在版本Version中運行得更快。

for (auto i = 0; i < 2000000; i++)      
        my_machine.PushEvent(event);

此外,發布版本的備忘錄使用量從255 MB減少到67MB。 內存被兩個隊列占用。

我希望不要將其標記為重復,但是我想聽聽一些有關性能差異的信息。

我發現各種來源表明,與Visual Studio的調試和發行版本之間幾乎沒有性能差異。

這很可能是不正確的,或者是誤解的信息……或者,顯然是關於另一種語言的信息 在誤解的情況下,原始說法可能是調試符號信息對性能沒有影響,這是正確的。

無論如何,由_DEBUG (特定於Visual Studio)啟用或由NDEBUG (控制斷言的標准宏)禁用的額外調試操作的確會產生開銷。 開銷有多大取決於程序的作用。 如果花費大量時間等待硬盤驅動器或網絡,則可能不是很重要。 如果對容器執行大量操作,則開銷可能會更大。

性能上的更大差異將來自缺乏優化(在發布版本中而不是在調試版本中啟用)。

許多生態系統中的發布版本都關閉了調試信息,並啟用了性能優化。 后者很可能解釋了您所看到的差異。

如果您想測試一下,則可以提高調試版本的優化級別,並查看它是否可以產生更可比的性能。 這是您可以使用的優化級別參數的列表 -我的猜測是發行版正在使用/ O2或/ Ox。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM