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里的方法比较好。至于原理,现在还不清楚。

posted @ 2010-07-05 22:08  为学  阅读(657)  评论(0编辑  收藏  举报