为什么 JAXB 转换为 XML 的平均执行时间会随着列表中元素数量的增加而减少?
Why does the average execution time for JAXB conversion to XML decrease as the number of elements in the list increase?
我有一个包含一些对象的列表,这些对象使用 JAXB 转换为 XML。当我增加列表中的记录数时,转换所花费的时间不会线性增加。 1条记录,耗时0.2秒;对于 10000 条记录,所用时间仅为 7 秒。平均转化时间如何减少?
long start = System.currentTimeMillis();
list.stream().forEach(Converter::toXml);
long end = System.currentTimeMillis();
System.out.println("Time taken for " + list.size() + " : " + (end-start));
P.S。我不包括填充列表所花费的时间。
JVM 编译代码,你越多 运行 它运行得越快。通常,直到您执行了 10000 次方法调用或循环迭代后,才会开始完整编译。您甚至可以在 100K 次迭代后看到进一步的优化。
除非你使用JMH之类的工具,否则我建议你重复运行测试并忽略前2秒至少给JVM一个预热的机会。 (顺便说一句,JMH 默认忽略前 20 秒)
我有一个包含一些对象的列表,这些对象使用 JAXB 转换为 XML。当我增加列表中的记录数时,转换所花费的时间不会线性增加。 1条记录,耗时0.2秒;对于 10000 条记录,所用时间仅为 7 秒。平均转化时间如何减少?
long start = System.currentTimeMillis();
list.stream().forEach(Converter::toXml);
long end = System.currentTimeMillis();
System.out.println("Time taken for " + list.size() + " : " + (end-start));
P.S。我不包括填充列表所花费的时间。
JVM 编译代码,你越多 运行 它运行得越快。通常,直到您执行了 10000 次方法调用或循环迭代后,才会开始完整编译。您甚至可以在 100K 次迭代后看到进一步的优化。
除非你使用JMH之类的工具,否则我建议你重复运行测试并忽略前2秒至少给JVM一个预热的机会。 (顺便说一句,JMH 默认忽略前 20 秒)