我們有一個應用程序具有一個或多個文本控制檯窗口,這些窗口基本上都表示串行端口(文本輸入和輸出,逐個字符)。這些窗口已經成爲目前代碼的主要性能問題......我們設法在這些窗口中花費大量時間。在Windows上加速文本輸出,用於控制檯
當前代碼的結構是讓窗口過着自己的小生活,主應用程序線程通過「SendMessage()」調用驅動它。這消息傳遞似乎是令人難以置信的開銷的原因。基本上,通過操作系統繞道感覺是不對的。
請注意,我們會在適當的位置繪製文本行,以便輕鬆優化。
我無法在Windows編碼的專家,所以我要問的社區如果有一些其他架構,以推動文本的顯示比發送這樣的消息窗口?它似乎很重量級。
注意,這是在C++或純C,作爲主應用程序是一個可移植的C/C++ /其他一些語言程序也運行在Linux和Solaris。
我們做了一些更多的調查,似乎有一半的開銷是使用SendMessage準備和發送每條消息,另一半是實際的屏幕繪圖。該SendMessage函數在同一文件中的函數之間做...
所以我想下面給出的所有建議是正確的:
- 查找有多少事情是重繪
- 借鑑的東西直接
- 塊繪製操作及時發送,不要將每個字符發送到屏幕上,目標是串行控制檯的10到20 Hz更新速率。
您可以接受所有的答案?
另請參見[Windows和OSX之間iostream控制檯輸出的性能差異?](http://stackoverflow.com/q/17817456) – jww 2015-11-08 19:45:03