[英]Why does my test winforms application seem to run sequencially?
我有许多规格很高的VMWare Server 2012实例(32个CPU),但是运行某些应用程序时似乎出现性能问题。
因此,我创建了一个.net winforms EXE,该EXE循环直至到达计数器:
do
{
mystring = counter++.ToString();
} while (counter != loops);
我在生产服务器上发现,我可以在一分钟内运行1.2M循环。 但是,当我运行该可执行文件的多个实例时,只需花费两倍的时间。
不用说,我运行的实例越多,花费的时间就越长。 即。 10份保险大约需要11分钟。
当我查看CPU使用率时:1个实例= 6%10个实例=每个0.5%
所以,我的问题是..为什么服务器似乎是顺序运行而不是并行运行? 是.Net问题吗? 服务器配置问题? VMware问题?
我认为这不是测试它的好方法。 基本上,您正在测试用户界面,并且认为它仅由一个内核提供服务,这并非疯狂。
WinForm应用程序(以及从WPF派生而来的事物)专门处理一个主UI线程上的UI,如果它们试图与其他线程上的UI混为一谈,则会出现竞争条件,该竞争条件通常导致随机锁定并冻结,但今天只抛出异常(这更好)。 您可以在WinForm应用程序中使用多线程(看起来并非如此),但不能触摸这些线程上的可视组件。 所有视觉组件事件(单击,鼠标悬停等)都将在UI线程上处理。
控制台应用程序可能会让您阅读更清晰。 最好是找到其他人制造的工具,因为在衡量性能方面存在很多陷阱,您可能会对此感到犯规。
供参考:根据这样的测试得出结论有些错误是不好的(例如,在VMWare,服务器或Windows中),如果您是同事,我会少想你。 在这种大胆的断言更加谨慎,相信这个问题是测试第 一位的 。 尝试衡量性能时,这始终是最好的心态。
在经历了大约一个星期或几个月的麻烦之后,您可能会开始质疑具有庞大用户群,高度复杂的发行流程和质量检查的软件产品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.