У меня проблема с созданием String
с узла JSON
.Медлительность с созданием строки из ObjectNode с помощью Jackson в Java
В настоящее время я делаю это по методу node.toString()
. Но иногда это занимает 7-8 секунд, чтобы создать строку JSON с весом 15 МБ-18 МБ.
Я также попытался использовать метод mapper.writeValueAsString(node))
. Но это показывает дополнительное время для теста. Это очень сложно проверить проблему, потому что ее также труднее воспроизвести.
В настоящее время я использую только ObjectNode
(не TextNode
, BooleanNode
и т. Д.). Это будет эффект для этого? Или есть лучший способ конвертировать JSONNode
в String
?
Образец кода: JsonNodeFactory nodeFactory = JsonNodeFactory.instance;
ObjectNode node = nodeFactory.objectNode();
node.put("fnm", "Namal");
node.put("lnm", "Fernando");
node.put("age", 30);
for (int i = 0; i < 10000; i++) {
ObjectNode order = nodeFactory.objectNode();
order.put("id", (i+1000)+"");
order.put("nm", "ORD"+(i+1000));
order.put("ref", "RF-"+i);
node.put("order"+i, order);
}
long smili = System.currentTimeMillis();
System.out.println("main().Node : " + node.toString());
System.out.println("main().TIMING 1 : " + (System.currentTimeMillis() - smili)/1000.0);;
long smili2 = System.currentTimeMillis();
ObjectMapper mapper = new ObjectMapper();
System.out.println("main().Node : " + mapper.writeValueAsString(node));
System.out.println("main().TIMING 2 : " + (System.currentTimeMillis() - smili2)/1000.0);;
Если вы просто измерить один или два элемента, вы выиграли Получите соответствующий результат. Вы должны попробовать хотя бы некоторое h undred или тысячи вызовов для минимизации эффектов загрузки классов, инициализации и т. д. –
В микро-бенчмаркинге есть много деталей. Используйте [специальный инструмент] (http://openjdk.java.net/projects/code-tools/jmh /). – Zernike
@Uwe: Здесь у меня есть формат. И мне в основном нужно знать этот node.toString() - лучший способ для этого или нет. – namalfernandolk