Почему мое тестовое приложение winforms кажется запускается последовательно? - PullRequest
0 голосов
/ 24 января 2019

У меня есть несколько экземпляров VMWare Server 2012 с очень высокой спецификацией (32 ЦП), но у меня возникают проблемы с производительностью при запуске определенных приложений.

Итак, я создал .Net winforms EXE, который просто зацикливаетсяпока счетчик не будет достигнут:

            do
            {
              mystring = counter++.ToString();  
            } while (counter != loops);

Я нашел на своем производственном сервере, я могу запустить циклы 1.2M за 1 минуту.Однако, когда я запускаю несколько экземпляров исполняемого файла, это просто вдвое дольше.

Само собой разумеется, чем больше экземпляров я запускаю, тем дольше это занимает.то есть.10 инсинов занимает около 11 минут.

Когда я смотрю на загрузку ЦП: 1 экземпляр = 6% 10 экземпляров = 0,5% каждый

Итак, мой вопрос ... почему сервер работает последовательно, а нев параллели??Это проблема .Net?Проблема с конфигурацией сервера?Проблема с VMware?

1 Ответ

0 голосов
/ 24 января 2019

Не думаю, что это хороший способ проверить это.По сути, вы тестируете пользовательский интерфейс, и не безумно думать, что пользовательский интерфейс обслуживается только одним ядром.

Приложения WinForm (а также вещи, производные от него, такие как WPF) специально обрабатывают пользовательский интерфейс в одном основном потоке пользовательского интерфейса, если они пытаются обойти пользовательский интерфейс в других потоках, возникают условия гонки, которые использовались дляприводят к случайным зависаниям и зависаниям, но сегодня просто генерируют исключения (это лучше).Вы можете использовать многопоточность в приложении WinForm (не похоже, что вы есть), но вы не можете касаться визуальных компонентов в этих потоках.ВСЕ события визуальных компонентов (щелчок, наведение мыши и т. Д.) Будут обрабатываться в потоке пользовательского интерфейса.

Консольные приложения, вероятно, дадут вам более четкое представление.Лучше было бы найти инструмент, который сделал кто-то другой, потому что есть тонны ошибок с точки зрения измерения производительности, и вы, возможно, ошибаетесь из-за них.

Для справки: делать выводы о том, что что-то не так, исходя из таких тестов, нехорошо (например, в VMWare, на серверах или в Windows), если бы вы были коллегой, я бы подумал о вас меньше,Будьте более осторожны в таких смелых утверждениях и верьте, что проблема в вашем тесте first и foremost .Это лучший способ мышления всегда при попытке измерить производительность.
После того, как вы пробили одну и ту же стену, возможно, неделю или месяцы, вы можете начать сомневаться в программных продуктах с * 1014.* огромные пользовательских баз и очень сложные процессы выпуска и QA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...