簡體   English   中英

控制台寫入速度是否會影響程序執行速度

[英]Does console write speed affect speed of program execution

在巨大的for循環的每個迭代(讓我們說i <100 000)上具有console.log是否會影響整體執行速度?

換句話說,如果沒有console.log,迭代會更快地進行嗎?

我沒有問是否會有“ ANY”差異,但是有明顯差異(例如10ms而不是1ms)嗎?

就我而言,我在談論Windows命令提示符和javascript

是的,控制台編寫確實會影響程序執行時間。

實際上,寫入控制台需要花費相當長的時間。 時間也取決於控制台的實際情況。 因此,運行中的計算機本地顯示器上的文本控制台比網絡上ssh鏈接另一端的控制台要快得多。 我認為被視為遠程桌面會話一部分的控制台不會比本地控制台快或慢-RDP會定期發送整個幀緩沖區,因此它不會試圖跟上每一次控制台打印。

一些運行時會做一些有趣的事情。 我知道您的問題被標記為Javascript,但請耐心等待。 在Linux上的gcc中實現的printf()函數將打印到stdout,它本身由運行時庫通過IPC管道進行緩沖,因此,如果您有多個線程,所有線程都同時調用printf(),那么輸出就不會太嚴重混亂。 通過管道進行緩沖實際上可以使應用程序早日購買。 管道可以迅速吸收文本輸出,因此運行時可以繼續將文本寫到屏幕上的繁瑣工作。 我不知道Win32(Windows中所有內容的最終基礎)是否做類似的事情。

因此,如果Javascript運行時是基於在Linux上gcc上編譯的C / C ++之上構建的,那么除了Javascript運行時自身添加的所有層之外,所有其他這些層都需要經過。

在C / C ++ GCC Linux中,stderr不是以這種方式進行緩沖的,它只會直接進入屏幕。 這可能會導致一些令人困惑的情況,例如

任何在C / C ++之上構建的運行時(如Javascript)也將繼承該行為!

這似乎也是最近Eclipse在其CDT的編譯控制台中弄錯了編譯器輸出順序的原因。 我認為Eclipse改變了從gcc之類的程序中獲取控制台輸出的方式,卻沒有意識到gcc本身是用gcc編譯的,不一定會按照嚴格的“時間”順序輸出stderr和stdout消息。

暫無
暫無

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

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