2016-04-02 2 views
2

У меня JSP содержит большое количество HTML-кода. Есть много внутренних div, span и h2 тегов. HTML-код генерируется скриптами, использующими некоторые для циклов.JSP - Производительность скрипта с большим количеством HTML-кода

измерить процесс скриптлета с помощью следующих действий:

<% long time = System.currentTimeMillis(); %> 
    // here is the entire page data 
    <% System.out.println("Time : " + (System.currentTimeMillis()-time)); %> 

В соответствии с этим измерением, время процесса составляет 300-350 мсек.

Чтобы определить те части, которые делают задержку, я сделал что-то вроде этого:

<% long time = System.currentTimeMillis(); %> 
     // Some HTML Blocks 
    <% System.out.println("Time1 : " + (System.currentTimeMillis()-time)); %> 
     // Another HTML Blocks 
    <% System.out.println("Time2 : " + (System.currentTimeMillis()-time)); %> 

Однако я понял, что иногда даже если я делаю следующее, даже нет HTML блока между printlns, время значение по-прежнему меняется!

<% long time = System.currentTimeMillis(); %> 
      // Some Blocks 
    <% System.out.println("Time1 : " + (System.currentTimeMillis()-time)); %> 
    <% System.out.println("Time2 : " + (System.currentTimeMillis()-time)); %> 

Выход:

Time1 : 65 
Time2 : 208 

Так что это то, что замедлить мою страницу? Как я могу определить точку?

У сценариев есть слабость в производительности для обработки тяжелых HTML-кодов?

----- UPDATE ------

enter image description here

Вот результат:

first : 0 
Sec : 0 
thr : 0 
fr : 180 
Total : 180 

Там нет ничего между Thr и фр фр но значение 180!

+0

Нет. Это просто старый Java-код, записывающий строки для автора ответов HTTP. Но у них есть серьезные недостатки в ремонтопригодности. Прочитайте http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files –

ответ

1

JSP - это классы java внизу. Не должно быть никакого влияния на производительность. Сценарии - плохая практика, поэтому, если это не просто для бенчмаркинга, я бы этого не сделал.

Накладные расходы при печати на консоль также. Поэтому, когда вы рассчитываете:

<% System.out.println("Time2 : " + (System.currentTimeMillis()-time)); %> 

Вы добавляете все время, необходимое для выполнения вызова println. Если вы хотите получить более точные показания, вы должны делать это вместо:

<% long time2 = System.currentTimeMillis(); %> 

только вычислить время в самом конце вашей JSP. Не рассчитывайте/распечатывайте результаты в середине JSP, так как вы увидите недопустимые результаты.

Как в сторону, я вижу, вы говорите, что используете пешки. Вы должны посмотреть на основную библиотеку JSTL: https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/c/tld-summary.html

+0

Спасибо за ответ. Использование JSTL или любого другого решения MVC может уменьшить время генерации html? Как вы говорите, jsp становится классом java, который содержит «out.write() ..» s в конце. Будет ли какая-то разница? – ftb

+1

Код JSTL - это код Java. Есть ли разница в производительности? Возможно нет. Вы пишете сценарии, которые являются Java-кодом. JSTL просто преобразуется в Java-код во время компиляции и гораздо удобнее обслуживать. –

+1

Я также добавлю, что я недавно потратил две недели на повторную запись страницы, сильно использующей для циклов для рендеринга. Контуры for генерировали примерно 2000 строк HTML, и в худшем случае они могли работать 20 раз. Если это будет похоже на вашу ситуацию, я предостерег вас от пересмотра вашего дизайна. В случае Internet Explorer на страницы потребовалось приблизительно 60 секунд, когда цикл выполнялся всего 10 раз. Это плохой дизайн с использованием сценариев или JSTL. –

Смежные вопросы