Unremitter 2011-09-13 06:42
浏览 265
已采纳

关于freemarker创建模板的问题.熟悉的朋友帮忙看看,谢谢

之前没接触过freemark.应项目要求使用freemark.结果发现使用freemark与不使用性能差距很大.如下是我的代码:
[code="java"]
Configuration cfg = new Configuration();
StringTemplateLoader templateLoader = new StringTemplateLoader();
templateLoader.putTemplate(
"tempTemplate",
"${fm.encode(\"${fm.encodeStr}&init=${fm.init}\")}");
cfg.setTemplateLoader(templateLoader);
cfg.setEncoding(Locale.CHINA, "UTF-8");
EncoderExample fm = new EncoderExample("test.test2");
Map map = new HashMap();
map.put("fm", fm);
CharArrayWriter writer = new CharArrayWriter(1000);
try
{
Template template = cfg.getTemplate("tempTemplate");
template.process(map, writer);
}
catch (Exception e)
{
System.out.println("Proccess ERROR." + e.getMessage());
}
finally
{
writer.flush();
writer.close();
}
[/code]

执行后发现Configuration这个类实例化的时候花费时间很长.大概200ms左右.相当于实例化普通类60000个.
请问下是否有其他创建模板的办法?或者有其他方式可以实现同样的功能?

麻烦知道的朋友帮忙下 谢谢啊~~

展开全部

  • 写回答

2条回答 默认 最新

  • fmjsjx 2011-09-14 01:19
    关注

    [quote]
    多谢你的回答.不过看了他的构造方法.貌似也不是单例的啊.
    Java代码 收藏代码

    public Configuration() {  
          cache = new TemplateCache();  
          cache.setConfiguration(this);  
          cache.setDelay(5000);  
          loadBuiltInSharedVariables();  
      }  
    

    但是循环创建一个对象跟创建100个对象花费的时间却差不多.不解啊~~~ [/quote]
    晕啊……都有构造了当然就不是单例了,我这里说的所谓“单例”,指的是要你自己在程序里维护一个全局唯一的Configuration对象,而不是说他自己是单例的……

    至于这个创建时间的问题,这个不就是java本身的特性么?第一次加载需要从jar包里加载到内存,涉及到IO,所以当然慢了,之后都是内存内操作,消耗就少得多……

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部