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

fou*_*guy 4 java jsp java-ee

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

我目前的方法是简单地使用scriptlet和System.currentTimeMillis():

JSP的顶部

<%
StringBuilder result = new StringBuilder();
long startTime = System.currentTimeMillis();
%>
Run Code Online (Sandbox Code Playgroud)

... JSP代码在这里

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

但问题是:

  • 使用此性能代码的污染JSP,
  • 在几个JSP中复制粘贴的代码,
  • 当JSP包含在<%@ include ...%>中时,效果不佳,因为结果变量已经在多个JSP中定义.

ian*_*man 5

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

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

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