我刚刚安装了点跟踪器来监控我写的巨大的自助服务亭管理器应用程序,现在我正在处理它的性能问题。该解决方案包含近40个不同的项目,这些项目由主程序集加载(取决于客户的要求),这是一个在运行时使用反射的WPF可执行文件。
在具有3 GB RAM和图形卡的3 GHz机器上(6% - 12%的CPU使用率,80 MB的RAM和20% - 40%的GPU使用率),性能是完全可以接受的,但3天前我在其中一个客户端的非常弱的机器(0.6 GHz CPU,1 GB RAM和没有图形卡)上运行它,并且CPU使用率超过60%,所以它让我找到了瓶颈!
无论如何,点跟踪器向我显示大部分时间花在等待(主要是Thread.Sleep
部分),因为我的应用程序有不同的线程在某些循环中等待某些东西(即插槽上的传入消息,按键按下一个设备等)。
那么,我的应用使用Thread.Sleep()
是不是很糟糕?我还有其他选择吗?
以下是测试结果: