JSP - 具有大量HTML代码的Scriptlet性能

时间:2016-04-02 16:06:55

标签: java html performance jsp scriptlet

我有一个包含大量HTML代码的JSP。有许多内部div,spans和h2标签。 HTML代码是由scriplets使用一些for循环生成的。

我使用以下方法测量scriptlet进程:

   <% 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)); %>

但是,我意识到有时即使我执行以下操作,即使printlns之间没有html块,时间值仍然会发生变化!

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

输出是:

Time1 : 65
Time2 : 208

那么减慢我页面的速度是什么?我怎样才能发现这一点?

Scriptlet在处理繁重的HTML代码时是否存在性能弱点?

-----更新------

enter image description here

这是输出:

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

thr和fr之间没有任何东西,但fr值是180!

1 个答案:

答案 0 :(得分:1)

JSP是下面的java类。不应该有任何性能影响。但是Scriptlet是不好的做法,所以除非这只是为了进行基准测试,否则我不会这样做。

打印到控制台时也会产生管理费用。所以,当你计算:

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

您正在添加进行println调用所需的所有时间。如果你想要更准确的阅读,你应该这样做:

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

仅计算JSP最后的时间。不要在JSP中间计算/打印结果,因为您会看到无效的结果。

顺便说一句,我看到你说你正在使用for循环。您应该查看JSTL核心库:https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/c/tld-summary.html