Java JSP-Scriptlet性能与大量HTML代码
我有一个JSP包含大量HTML代码。有许多内部div、span和h2标记。HTML代码由scriplets使用一些for循环生成 我使用以下方法测量scriptlet流程:Java JSP-Scriptlet性能与大量HTML代码,java,html,performance,jsp,scriptlet,Java,Html,Performance,Jsp,Scriptlet,我有一个JSP包含大量HTML代码。有许多内部div、span和h2标记。HTML代码由scriplets使用一些for循环生成 我使用以下方法测量scriptlet流程: <% long time = System.currentTimeMillis(); %> // here is the entire page data <% System.out.println("Time : " + (System.currentTimeMillis()-tim
<% long time = System.currentTimeMillis(); %>
// here is the entire page data
<% System.out.println("Time : " + (System.currentTimeMillis()-time)); %>
那么是什么让我的页面变慢了呢?我怎样才能发现这一点
Scriptlet在处理繁重的HTML代码时是否存在性能弱点
-----更新------
以下是输出:
first : 0
Sec : 0
thr : 0
fr : 180
Total : 180
thr和fr之间没有任何值,但fr值为180 JSP是底层的java类。不应该有任何性能影响。不过,scriptlet是一种糟糕的做法,所以除非这只是为了基准测试,否则我不会这么做 在控制台上打印时也会产生管理费用。所以当你计算的时候:
<% System.out.println("Time2 : " + (System.currentTimeMillis()-time)); %>
您正在添加进行println调用所需的所有时间。如果您想获得更准确的读数,您应该这样做:
<% long time2 = System.currentTimeMillis(); %>
只计算JSP最末尾的时间。不要在JSP的中间计算/打印结果,因为您将看到无效结果。
作为旁白,我看到你说你正在使用for循环。您应该看看JSTL核心库:No。它只是简单地将字符串写入HTTP响应编写器的旧Java代码。但它们有严重的可维护性弱点。阅读,谢谢你的回答。使用JSTL或任何其他MVC解决方案可以减少html生成时间吗?正如您所说,jsp变成了一个java类,其末尾包含“out.write()…”。有什么区别吗?JSTL代码是Java代码。是否存在性能差异?可能不会。您正在编写脚本,这是Java代码。JSTL只是在编译时转换成Java代码,而且更易于维护。我还要补充一点,我最近花了两周时间重新编写了一个页面,该页面大量使用for循环进行渲染。for循环生成了大约2000行HTML,在最坏的情况下,它们可以运行20次。如果这听起来像你的情况,我会提醒你重新考虑你的设计。在InternetExplorer中,当循环仅运行10次时,加载页面大约需要60秒。使用Scriptlet或JSTL进行的设计很差。返回当前时间(以毫秒为单位)。请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以几十毫秒为单位测量时间。根据currentTimeMillis()上的文档。您可能应该使用
System.nanoTime()
first : 0
Sec : 0
thr : 0
fr : 180
Total : 180
<% System.out.println("Time2 : " + (System.currentTimeMillis()-time)); %>
<% long time2 = System.currentTimeMillis(); %>