Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP-Scriptlet性能与大量HTML代码_Java_Html_Performance_Jsp_Scriptlet - Fatal编程技术网

Java JSP-Scriptlet性能与大量HTML代码

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

我有一个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()-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(); %>