.net Заполнители и StringBuilders - PullRequest
1 голос
/ 30 июня 2009

Когда мы создаем наши веб-приложения, мы динамически создаем много HTML и выводим их в заполнители во время выполнения. Одна из причин этого заключается в том, чтобы контролировать наш HTML-вывод, чтобы оптимизировать его для SEO, и теперь, когда мы занимаемся этим некоторое время, он стал «таким, каким мы его делаем». Обычно это происходит, когда мы перебираем результаты.

Мой вопрос,

Есть ли разница в производительности между многими sb.append (someHTML), а затем один placeholder.controls.add (новый literalcontrol (sb.tostring) против использования только placeholder.controls.add (новый literalcontrol (someHTML) каждый раз.

Во-вторых, следует ли нам использовать какой-то другой метод для создания и повторного использования фрагментов HTML и внедрения данных во время выполнения? Мы отказались от стандартных элементов управления данными .net из-за раздувания кода.

Есть мысли?

Ответы [ 4 ]

0 голосов
/ 30 июня 2009

Я подозреваю, что "это не имеет значения". Джефф Этвуд получил отличный пост о микрооптимизации: Печальная трагедия театра микрооптимизации (хотя это не то же самое, что вы делаете, он подчеркивает тот факт, что тратить время на определенные «оптимизации» просто не стоит).

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

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

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

0 голосов
/ 30 июня 2009

Если вы имеете в виду раздувание кода этих элементов управления, связанных с веб-формами, вы можете обратиться к структуре ASP.NET MVC. Хотя многие документы «с чего начать» начинают проекты с нуля, есть, по крайней мере, пара, показывающая, как начать интегрировать их в существующий проект.

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

0 голосов
/ 30 июня 2009

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

Лично я использую dotTrace от JetBrains

0 голосов
/ 30 июня 2009

Не зная точно, что делает объект "plc", трудно сказать.

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

Trace="true"

в заголовке <% @%> страницы.

Что касается второй части вашего вопроса, вы можете обратиться к ASP.NET MVC для новой работы. Это сделано для того, чтобы делать то, что вы описываете.

...