【发布时间】:2020-07-31 02:10:30
【问题描述】:
我是一名大三学生,有一个任务。 我需要编写一个简单的应用程序来测试 Freemarker 表达式的性能。
Map<String, Object> data = new HashMap<String, Object>();
data.put("firstString", "13");
data.put("secondString", "17");
条件:${(firstString + secondString)?number};
目标是重复该过程 100.000 次(解析模板、设置变量、评估模板)并以毫秒为单位评估性能。
public static void main(String[] args) throws IOException {
Configuration cfg = new Configuration();
try {
long startTime = System.nanoTime();
// Connect to Freemarker template
Template template = cfg.getTemplate("src/concatenation.ftl");
// Create data to use in expresion String to number = ${(firstString + secondString)?number}
Map<String, Object> data = new HashMap<String, Object>();
data.put("firstString", "13");
data.put("secondString", "17");
for (int i = 0; i < 100_000 ; i++) {
// Console output
Writer out = new OutputStreamWriter(System.out);
template.process(data, out);
out.flush();
}
// Measure performance time
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println();
System.out.println("Parse template for 100.000 objects completed in " + duration / 1000000 + " milliseconds");
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
需要帮助弄清楚如何在主类中使用 Freemarker 表达式,以防止从外部文件读取更精确地进行性能测试。
很高兴听到您的所有建议。
附言我们要构建一个大应用程序,它可以处理大数据。我们计划使用 Freemarker 来处理这些数据。
【问题讨论】:
标签: java freemarker