Я младший и получил задание. Мне нужно написать простое приложение для проверки производительности выражения 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 в основном классе, чтобы предотвратить чтение из внешнего файла. именно в тесте производительности.
Буду рад услышать все ваши рекомендации.
ps Мы собираемся создать большое приложение, которое будет работать с большими данными. И мы планируем использовать Freemarker для обработки этих данных.