gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:14:16 25 4
gpt4 key购买 nike

我有一个包含大量 HTML 代码的 JSP。有很多内部 div、span 和 h2 标签。 HTML 代码由 scriplet 使用一些 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 block ,时间值仍然会发生变化!

   <% 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 !

最佳答案

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

关于java - JSP - 具有大量 HTML 代码的 Scriptlet 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36375570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com