找到慢速JSP的根本原因的最佳技术是什么?

时间:2012-05-04 16:51:42

标签: java jsp java-ee

我可以使用哪些技术来修改一组JSP来衡量JSP的整体性能,然后进一步缩小和识别JSP中花费最多时间的特定区域?

我目前的方法是简单地使用scriptlet和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%> -->

但问题是:

  • 使用此性能代码污染了JSP,
  • 将粘贴的代码复制到多个JSP中,
  • 当&lt;%@ include ...%&gt;中包含JSP时,
  • 不能正常工作因为结果变量已经在多个JSP中定义。

1 个答案:

答案 0 :(得分:5)

#1 - 黄金法则 - 不要在JSP中放置任何逻辑。写自定义标签。将任何逻辑提取到java代码中。 JSP是表示层。

#2 - 在分析器中运行servlet容器(比如jvisualvm甚至更好:yourkit)。这将告诉您确切的时间花在哪里

注意 - 现在您不需要“在分析器中运行应用程序” - 如果使用JDK6 +,您可以弹出yourkit或jvisualvm(随JDK一起提供)并在运行时神奇地附加。这真的很方便。