繁体   English   中英

为什么我的测试Winforms应用程序似乎可以顺序运行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM