.net, UserControls и время запуска приложения - PullRequest
0 голосов
/ 07 декабря 2009

У нас есть приложение среднего размера, которое зависит от нескольких пользовательских контролей, а именно:

Панель таблиц, с сеткой пользовательских контролов 2x5, с 3+ уровнями наследования. Оказалось, что большой проблемой, с которой мы сталкиваемся с нашим приложением, является время запуска (как холодное, так и теплое), и одно из самых больших препятствий, которое мы получаем, - инициализация этой сетки управления пользователями.

Из наших отчетов о времени, эта форма приходит примерно за 0,75 секунды для инициализации, и сокращение ее будет большим делом .

Мой вопрос: Какого черта я могу сделать, чтобы ускорить это? Всякий раз, когда я запускаю проверки синхронизации для InitializeComponents аналогичной сложности (все окна, элементы управления .net), результат иногда оказывается на величины меньше (<10 миллисекунд). </p>

edit) Мне интересно, помогут ли такие вещи, как пометка моих последних классов загерметизированные или что-то подобное.

edit2) Я посмотрел глубже во время инициализации компонента, и для моей текущей машины основной контейнер добавляет к нему 10 компонентов (по 10 мс на штуку). Каждый из этих компонентов добавляет 3 компонента (по 10 мс за штуку). 10x10 + 30x10 = 700 мс. Если я не смогу увеличить скорость добавления предметов в свои контейнеры, я думаю, что я SOL.

Ответы [ 2 ]

1 голос
/ 07 декабря 2009

Делаете ли вы что-нибудь, что зависит от внешних факторов при инициировании управления, например, доступ к сети или извлечение данных из базы данных? Это может увеличить время загрузки вашего приложения.

Проверьте также на наличие петель и попытайтесь уменьшить их.

0 голосов
/ 07 декабря 2009

Может быть или не быть связанным, но у меня была похожая проблема с использованием TableLayoutPanel. Проблема заключалась в времени рисования, как показал профилировщик. Комбинация, которая вызывала у нас проблемы, заключалась в прозрачности внутренних элементов управления и динамическом изменении размера. Я поиграл с некоторыми опциями CreateParams, но, к сожалению, мне пришлось создать собственный движок, чтобы он действительно пел.

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

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