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