2012-05-04 2 views
4

Какие методы я могу использовать для изменения набора JSP для измерения общей производительности JSP, а затем для дальнейшего сужения и определения конкретных областей в JSP, где больше всего времени потрачено?Какова лучшая техника для поиска основной причины медленного JSP?

Мой текущий подход заключается просто в использовании скриптлет и System.currentTimeMillis():

верхушку JSP

<% 
StringBuilder result = new StringBuilder(); 
long startTime = System.currentTimeMillis(); 
%> 

... JSP код здесь

<% 
long duration = System.currentTimeMillis() - startTime; 
if (duration > 100L) { //over 100 ms 
    result.append("JSP page took "+duration+"ms"); 
} 
%> 
<!-- <%=result%> --> 

Но проблемы при этом:

  • загрязненная JSPs с этим производительностью кодой,
  • копия вставить код в нескольких JSPs,
  • не работает хорошо, когда JSPs включены <% @ включает ...%>, так как переменная результат уже определены в нескольких JSPs.
+0

Если вы используете Eclipse, есть инструменты для профилирования. – Ivan

+0

... за исключением случаев, когда вы используете Eclipse на MacOS, нет :-( – DerMike

ответ

5

# 1 - золотое правило - не ставьте никакой логики в JSP. писать собственные теги. извлечь любую логику в java-код. JSP - это уровень представления.

# 2 - запустить контейнер сервлетов в профилировщике (например, jvisualvm или даже лучше: yourkit). Это точно скажет вам, где именно находится время

ПРИМЕЧАНИЕ. - В настоящее время вам не нужно «запускать приложение в профилировщике» - если вы используете JDK6 +, вы можете открывать свои киты или jvisualvm (поставляется с JDK) и прикладывать магически пока он работает. это очень удобно.

+0

Это отличные советы. Я должен был сказать в вопросе, что производительность только медленнее при привязке к данным реального мира, локальные среды разработки, как правило, это не так, и становится трудно проецировать локально, поскольку это кажется быстрым, когда он привязан только к поддельным или тривиальным наборам данных. Я планирую попробовать эти предложения, спасибо. – fourgablesguy

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