устранение проблем с производительностью после преобразования из .net 2.0 в 4.0 - PullRequest
2 голосов
/ 31 января 2012

У меня есть 5-летнее MDI-приложение winforms .net, которое я только что преобразовал из .net 2.0 в 4.0 с использованием версии 2010 ... приложение теперь запускается примерно за 1,5 минуты и открывает пустую форму при запуске вне vs,и около 15 секунд при запуске в пределах vs. (не было заметной задержки при запуске приложения ни в одном из сценариев до обновления до .net4.0 и devexpress 11.2)

К сожалению, здесь слишком много переменных.... как мы также должны были использовать новую версию библиотеки управления devexpress и слой устойчивости xpo (orm).

Основная форма имеет около 1500 или около того элементов управления, распределенных между 12 вкладками элемента управления devexpress tabcontrol.Профилирование приложения показывает, что в конструкторе форм почти 63% времени тратится на "clr.dll" ... и теперь у меня есть идея, как это интерпретировать.

как тест, с которым я построил другое приложениете же инструменты и отбросили 1500 элементов управления в пустой форме, и это показывает, что менее 1% времени в этом приложении тратится на clr.dll для этого конструктора формы.

Это не такдля меня ... кто-нибудь может понять это или направить меня в правильном направлении, чтобы продолжить понимать, куда все время идет ...

Я был готов просто принять результаты и сказать хорошо ..Мы не можем этого сделать, но тот факт, что я могу создать другую форму devexpress и опустить 1500 элементов управления на нее, и когда я ее профилирую, результаты приобретают гораздо больший смысл, большая часть времени в конструкторе форм тратится нафункция ControlsCollection.Add или сами конструкторы элементов управления ...

есть идеи?

спасибо Джонатан

Profiler results ОК ... я повернулсяЗагрузка символов, и это то, что я получаю сейчас ... и я должен сказать, что это беспокоит меня, так как я работаю на машине Intel ... Я также не могу найти никакой документации по вызову PreStubAmd64.enter image description here

1 Ответ

1 голос
/ 03 февраля 2012

Ну ... я, кажется, решил свою собственную проблему, но я не все понимаю.

Поскольку я преобразовал исходный проект с 2008 года, целевой платформой в VS 2010 была «Любой процессор» ... (что для меня имеет смысл ...). Я пытался создать новое приложение, которое показывало ту же самую плохую производительность, я заметил, что все мои новые проекты по умолчанию работали на x86 и работали великолепно ... так что ...

после игры с менеджером конфигурации и создания нового конфига для моего решения проблемы, которое нацелено на x86, мое время запуска изменилось с примерно 90 секунд до 9 секунд ... и я не вижу никаких признаков функции "theStubAMD64", которая занимала как 80% моего времени на создание формы ... ухооо ...

так что для любого, кто конвертирует форму 2008 в 2010 и нуждается в работе под x64, я мог бы изменить цель на x86. (Я уверен, что я скучаю по всем видам вещей ... но я счастлив!)

1009 * Ионафан *

Я не думаю, что кто-то захочет объяснить, почему приложение работает под wow64 быстрее, чем собственное 64-битное ...

...