Чрезмерное использование ASP.NET Пользовательских элементов управления

Нет такой вещи как один язык, являющийся быстрее, чем другой, таким образом, надлежащий ответ никакой .

то, Что действительно необходимо спросить, является "кодом, компилируется с компилятором Фортрана X быстрее, чем эквивалентный код, скомпилированный с компилятором C Y?" Ответ на тот вопрос, конечно, зависит, на котором два компилятора Вы выбираете.

Другой вопрос, который можно было задать, будет вроде, "Учитывая то же усилие, помещенное в оптимизацию в их компиляторах, какой компилятор произвел бы более быстрый код?" Ответ на это на самом деле был бы Фортран . Компиляторы Фортрана имеют преимущества certian:

  • Фортран должен был конкурировать с блоком назад в день, когда некоторые поклялись никогда не использовать компиляторы, таким образом, он был разработан для скорости. C был разработан, чтобы быть гибким.
  • ниша Фортрана была перемалыванием чисел. В этом доменном коде никогда достаточно быстро. Таким образом, всегда было большое давление для хранения языка эффективным.
  • большая часть исследования в оптимизации компилятора проведена людьми, заинтересованными ускорением кода перемалывания чисел Фортрана, так оптимизация кода Фортрана является намного более известной проблемой, чем оптимизация любого другого скомпилированного языка, и новые идеи обнаруживаются в компиляторах Фортрана сначала.
  • Важная персона : C поощряет намного больше использования указателя, чем Фортран. Это решительно увеличивает потенциальный объем любого элемента данных в программе C, которая делает их намного тяжелее для оптимизации. Обратите внимание, что Ada является также путем лучше, чем C в этой области и является намного более современным Языком OO, чем обычно находимый Fortran77. Если Вы хотите язык OO, который может сгенерировать более быстрый код, чем C, это - опция для Вас.
  • снова благодаря его нише перемалывания чисел, покупатели компиляторов Фортрана склонны заботиться больше об оптимизации, чем покупатели компиляторов C.

Однако нет ничего мешающего кому-то поместить тонну усилия в оптимизацию их компилятора C и заставить его сгенерировать лучший код, чем компилятор Фортрана их платформы. На самом деле большие продажи, сгенерированные компиляторами C, делают этот сценарий довольно выполнимым

7
задан davidsleeps 17 August 2009 в 03:36
поделиться

5 ответов

10-20 (или даже сотни) пользовательских элементов управления - это сверх тривиально. Наличие самих элементов управления и идея инкапсуляции определенно не являются источником ваших проблем.

Невозможно сказать точно , в чем проблема, конечно, без фактического профилирования приложения, но на основе по своему опыту могу сказать следующее:

Более вероятно, что конкретная реализация бизнес-логики внутри каждого пользовательского элемента управления является плохой. Поскольку обратная передача занимает столько времени, сколько вы описываете, каждый элемент управления, вероятно, обращается к вашему DAL в поисках собственных данных по каждому запросу. Это можно смягчить двумя вещами:

  • Убедитесь, что пользовательские элементы управления кэшируют все свои данные при первой загрузке, и никогда не перезагружают их, если явно не указано (обычно по событию от службы нижнего уровня).
  • Убедитесь, что все элементы управления используют набор общих служб, которые могут повторно использовать данные. Например, если двум элементам управления нужен доступ к списку клиентов, и они выполняются в контексте одного сеанса запроса, для этого потребуется только один поиск в списке клиентов.
10
ответ дан 6 December 2019 в 10:02
поделиться

Насколько я понимаю, вы не знакомы с приложениями, в которых используется так много пользовательских элементов управления?

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

Все они могут выполнять профилирование памяти и ЦП Приложения ASP.NET.

2
ответ дан 6 December 2019 в 10:02
поделиться

Я согласен с Сондерсом в отношении выполнения некоторого профилирования, чтобы определить влияние определенных вещей. .

Обратите внимание, что вы можете получить несколько бесплатных инструментов стресс-тестирования для IIS здесь: http://support.microsoft.com/kb/840671

Однако я скажу, что слишком много элементов управления наверное не очень хорошая вещь, ИМХО. Не зная больше, я бы сказал, что 20 - это слишком много.

хотя, ИМХО, слишком много элементов управления, вероятно, нехорошо. Не зная больше, я бы сказал, что 20 - это слишком много.

хотя, ИМХО, слишком много элементов управления, вероятно, нехорошо. Не зная больше, я бы сказал, что 20 - это слишком много.

1
ответ дан 6 December 2019 в 10:02
поделиться

Я считаю, что одной из ключевых целей UserControls является повторное использование кода. То есть, если одна и та же функциональность встречается на нескольких веб-страницах, лучше создать для нее UserControl. Это не только избавляет разработчика от написания (или копирования и вставки) одного и того же кода на несколько веб-страниц, но также значительно упрощает обслуживание. Любые изменения, внесенные в UserControl, автоматически применяются везде, где используется UserControl. Разработчику сопровождения не нужно беспокоиться о том, чтобы найти все разные места, которые нужно изменить в коде.

Я не уверен, что одноразовый UserControl так же эффективен. Они инкапсулируют и разделяют код, что хорошо на загруженной веб-странице.

Можете ли вы выяснить, используются ли ваши UserControl повторно или многие из них используются только один раз.

1
ответ дан 6 December 2019 в 10:02
поделиться

Я твердо поставлю себя в лагерь людей, которые полагают, что нет жесткого ограничения на количество пользовательских элементов управления, которые следует использовать на странице. Похоже, здесь нужна трассировка всего приложения вместо трассировки на уровне страницы. Вполне может быть, что некоторые из этих элементов управления вызывают проблему. Черт возьми, это может быть единственный элемент управления, который вызывает всю суету. Однако, поскольку невозможно сделать какие-либо предположения об уровне использования ресурсов, который занимает «среднее» (если такое есть) пользовательское управление, также невозможно предложить предел. В противном случае мы могли бы придумать аналогичные ограничения на количество членов класса или количество хранимых процедур в базе данных.

Теперь, если мы ' Если мы говорим о 20 сложных пользовательских элементах управления, каждый из которых извлекает свои собственные данные при каждом обновлении, и каждый имеет кучу подчиненных элементов управления, использующих ViewState, независимо от того, нужно это или нет, то да, это проблема. Тем не менее, это больше связано с общим дизайном, чем с слишком большим количеством элементов управления. Если, с другой стороны, они создали общий пользовательский элемент управления, который действует как не более чем композиция метки слева от текстового поля (или, возможно, даже каждая комбинация метка + элемент управления, управляемый пользователем), и разбросали это контроль во всем приложении, я могу представить, что вы получите их кучу на странице, и я не понимаю, почему это обязательно что-нибудь повредит.

это больше связано с общим дизайном, чем с слишком большим количеством элементов управления. Если, с другой стороны, они создали общий пользовательский элемент управления, который действует как не более чем композиция метки слева от текстового поля (или, возможно, даже каждая комбинация метка + элемент управления, управляемый пользователем), и разбросали это контроль во всем приложении, я могу представить, что вы получите их кучу на странице, и я не понимаю, почему это обязательно что-нибудь повредит.

это больше связано с общим дизайном, чем с слишком большим количеством элементов управления. Если, с другой стороны, они создали общий пользовательский элемент управления, который действует как не более чем композиция метки слева от текстового поля (или, возможно, даже каждая комбинация метка + элемент управления, управляемый пользователем), и разбросали это контроль во всем приложении, я могу представить, что вы получите их кучу на странице, и я не понимаю, почему это обязательно что-нибудь повредит.

5
ответ дан 6 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: