Description
Given a test case [1], the performance of java.beans.XMLEncoder.writeObject() is very poor.
**************INDEX=5****************************
writing 5000 of integers encode time:2025 flush time:40
writing 10000 of integers encode time:6242 flush time:87
writing 15000 of integers encode time:12464 flush time:137
writing 20000 of integers encode time:21949 flush time:166
writing 25000 of integers encode time:32119 flush time:219
For writing a list of 25000 integers, XMLEncoder.writeObject() takes about half a minute.
[1] Performance test case:
public class XMLEncoderWriteObjectPerfTest {
public static List<Integer> integerListOf(int length) {
List<Integer> integerList = new ArrayList<Integer>();
for (int index = 0; index < length; index++)
return integerList;
}
public static void timeOfXMLEncoder(int length)
{ ByteArrayOutputStream baos = new ByteArrayOutputStream(); XMLEncoder xmlEncoder = new XMLEncoder(baos); System.out.print("writing " + length + " of integers\t"); Object obj = integerListOf(length); long start = System.currentTimeMillis(); xmlEncoder.writeObject(obj); System.out.print("encode time:" + (System.currentTimeMillis() - start)); start = System.currentTimeMillis(); xmlEncoder.close(); System.out.println("\tflush time:" + (System.currentTimeMillis() - start)); } public static void main(String[] args) {
for (int index = 0; index < 10; index++)
}
}