Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическая генерация и отображение HTML кода, производительность, скорость отрисовки  
:(
    Опции темы
davandr
Дата 13.6.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 25.10.2005
Где: Украина, Харьков

Репутация: нет
Всего: нет



Привет!

Вопрос по производительности.

На загрузке страницы у меня происходит генерация большого html-кода. То что создавать серверные контролы для этого не стоит - факт. Я пучкми генерю нужную мне строку (string myHtmlString), а потом в нужном месте страницы делаю серверную подстановку переменной.

Вот так: <%=myHtmlString %>

Хочу услышать Ваше мнение. Может можно еще что-то "ускорить"?







--------------------
PM MAIL   Вверх
Idsa
Дата 13.6.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



davandr, можно попробовать настроить кэширование.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
davandr
Дата 13.6.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 25.10.2005
Где: Украина, Харьков

Репутация: нет
Всего: нет



Ну, суть-то не в этом. Раз уж на то пошло - можно сделать свой контрол, туда ручками, как это я сейчас делаю, вывести весь html, а потом уже играться с кэшированием.  smile 

Меня интересует вопрос наиболее быстрого выворда html.


--------------------
PM MAIL   Вверх
Zakonnic
Дата 13.6.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 3
Всего: 6



Вообще лучше использовать Responce.Write, так как склейка больших строк может быть медленной. На худой конец StringBuilder. 
Если не нужны серверные контролы, то можно написать хендлер для такого дела, это чуть быстрее, чем обычные страницы.

И кстати, не проводились ли какие измерения, сколько времени занимает генерация такой страницы с серверными контролами и вручную? А то не совсем понятно, ради чего все извращения.
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
Idsa
Дата 13.6.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Zakonnic @  13.6.2008,  18:41 Найти цитируемый пост)
И кстати, не проводились ли какие измерения, сколько времени занимает генерация такой страницы с серверными контролами и вручную? А то не совсем понятно, ради чего все извращения. 

Насчет измерений не в курсе, но я на 100% уверен, что игра не стоит свеч. В Web-приложениях на фоне времени загрузки страницы задержка даже в одну десятую секунды не будет замечена пользователем.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
tolik_p
Дата 19.6.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.6.2007
Где: Брянск

Репутация: 1
Всего: 1



Цитата

В Web-приложениях на фоне времени загрузки страницы задержка даже в одну десятую секунды не будет замечена пользователем.

Если к этой странице одновременно обратятся 50 пользователей, то уже будет задержка на 5сек.
Но это должен быть очень популярный проект.
PM MAIL ICQ   Вверх
Idsa
Дата 19.6.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(tolik_p @  19.6.2008,  15:57 Найти цитируемый пост)
Если к этой странице одновременно обратятся 50 пользователей, то уже будет задержка на 5сек.

Не. Неправильная математика.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 19.6.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



tolik_p, с чего ты вообще взял что серверные контролы будут работать медленее? Они точно так же генерят html, и пишут его в Response, скорее всего даже быстрее, чем ты это делаешь вручную. А ты занимаешься бесполезной преждевременной оптимизацией.


--------------------
PM MAIL WWW   Вверх
Idsa
Дата 19.6.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(PashaPash @  19.6.2008,  18:03 Найти цитируемый пост)
tolik_p, с чего ты вообще взял что серверные контролы будут работать медленее? Они точно так же генерят html, и пишут его в Response, скорее всего даже быстрее, чем ты это делаешь вручную. 

Сами-то они, конечно, ничего не пишут: они просто возвращают html при вызове WebControl.Render(). Ну а медленнее они, чем строки, из-за того, что им приходится проходить весь жизненный цикл. Однако строка контролов наверняка формируется путем прохода цикла/циклов и конкатенации строк наподобие srt += "<tr><td>Hello, Vingrad!</td></tr>. А конкатенированная строка - это новый объект, под который нужно выделять память.

Цитата(PashaPash @  19.6.2008,  18:03 Найти цитируемый пост)
А ты занимаешься бесполезной преждевременной оптимизацией. 

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


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 19.6.2008, 15:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Цитата(Idsa @  19.6.2008,  14:53 Найти цитируемый пост)
Сами-то они, конечно, ничего не пишут: они просто возвращают html при вызове WebControl.Render(). Ну а медленнее они, чем строки, из-за того, что им приходится проходить весь жизненный цикл. Однако строка контролов наверняка формируется путем прохода цикла/циклов и конкатенации строк наподобие srt += "<tr><td>Hello, Vingrad!</td></tr>. А конкатенированная строка - это новый объект, под который нужно выделять память.
WebControl.Render принимает параметром HtmlTextWriter, в который контролы напрямую пишут, только на чуть более высоком уровне. Т.е. там нет конкатенации, прямо в респонс стрим пишется сначала "<td>", потом "<td>", потом контент, потом закрывающие тэги. К моменту записи последних первые тэги уже могут уйти к клиенту. Asp.net не собирает весь html в одну большую мегастроку, он вообще со строками на уровне html не работает. тупо конвертит их в байты по мере поступления и отдает клиенту. А расходы на стандартный жизненный цикл просто ничто по сравнению с расходами на ручную организацию своего жизненного цикла, собирания мегапеременной myHtmlString, расходов памяти на самописную работу с html. 
Вообще ситуация напоминает "Стандартный болид F1 мы сочли слишком медленным. У него же крылья торчат, всем понятно что ими махать тяжело - это факт. Поэтому мы сделали свою собственную телегу. Скажите, какие лучше сделать - шестиугольные или квадратные колеса?".

Это сообщение отредактировал(а) PashaPash - 19.6.2008, 15:10


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0983 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.