Console.WriteLine在以Windows Application方式下编译会产生性能问题
新接觸C#+.net 3.5,用C#重寫了一個以前用Qt寫的串口操作程序,并以Class Library方式編譯,測試程序是以Console Application方式進行編譯的C#程序,把發送和接收的信息用Console.WriteLine的方式打印出來,一切都很好,在用StopWatch來比較寫一段0xFFF長度的CANBUS串口消息用了1.75秒左右的時間,跟用Qt寫的操作時間差不多。
后來在這個Class Library增加了WPF的模塊,于是在原來測試程序由Console Application改成Windows Application來編譯,并把原來測試串口操作的程序以第二線程(即WPF為主線程)來執行,但這次StopWatch記錄所花的時間居然是9秒多(在VS2008輸出窗口中),難道是Windows Application編譯會減慢速度?又轉成Console Application來編譯,這次就多了一個Console的黑窗口,時間上是1.75秒,跟以前是一樣。難道是string的問題?把打印信息改成StringBuilder來組織,再以Windows Application來編譯,還是一樣9秒多。于是把Console.WriteLine注釋掉,時間沒有影響,一樣是1.75秒左右。難道在Windows Application下使用Console.WriteLine會影響性能?查找了一下MSDN有關C# Debug的方法,使用System.Diagnostics.Trace.WriteLine,居然程序沒有影響了。
所以以后如果想得到一些高度信息等調試手段,還是使用System.Diagnostics里的方法比較好。至于原理,現在還不清楚。
轉載于:https://www.cnblogs.com/crazywolf/archive/2010/07/05/1771719.html
總結
以上是生活随笔為你收集整理的Console.WriteLine在以Windows Application方式下编译会产生性能问题的全部內容,希望文章能夠幫你解決所遇到的問題。