我为我的web应用程序使用StringTemplate作为视图图层。最近我测量了渲染页面花费了多少时间,简单页面大约需要50ms,复杂页面大约需要500ms。这对我的需求太多了,所以我正在寻找一种方法来提高ST的表现。我怎样才能做到这一点?为什么StringTemplate可能会很慢?
大部分时间是由StringTemplate.toString方法消耗掉,所以它不是一个缓存问题。
我积极利用匿名模板和包含的模板 - 可这是原因?
我为我的web应用程序使用StringTemplate作为视图图层。最近我测量了渲染页面花费了多少时间,简单页面大约需要50ms,复杂页面大约需要500ms。这对我的需求太多了,所以我正在寻找一种方法来提高ST的表现。我怎样才能做到这一点?为什么StringTemplate可能会很慢?
大部分时间是由StringTemplate.toString方法消耗掉,所以它不是一个缓存问题。
我积极利用匿名模板和包含的模板 - 可这是原因?
使用write()不toString然后写入您的流。 write()将呈现并传输w/o缓冲。巨大差距。 Ter
是特伦斯帕尔?
我认为特伦斯意思是
template.write(new AutoIndentWriter(response.getWriter()));
但我不能beieve,这将使任何明显的差异。
你应该时刻两件事情分开
String str = template.toString(); // 1
response.getWriter().print(str); // 2
缓慢可能是基于涉及IO二号线。
我刚刚测量(1)和(2)。不幸的是,问题出现在'toString'中; 'print'只需要很少的时间。 – Fixpoint 2010-06-24 13:28:58
如果使用toString()
内存是要大。
检查你的记忆时toString()
情况下运行负载测试。
如果你的记忆力够了。两种情况是同一时间。
不是缓存问题?如果你缓存了结果字符串呢? – 2010-06-23 15:40:49
这就是我打算做的暂时解决问题,但我更喜欢快速浏览引擎来缓存。 – Fixpoint 2010-06-23 17:13:40
@Fixpoint:你可以发布你正在用来测试ST的源代码吗? – 2012-03-22 12:09:02