harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Zhou (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-6664) [classlib][beans] Poor performance of java.beans.XMLEncoder.writeObject() method
Date Tue, 28 Sep 2010 06:46:34 GMT
[classlib][beans] Poor performance of java.beans.XMLEncoder.writeObject() method
--------------------------------------------------------------------------------

                 Key: HARMONY-6664
                 URL: https://issues.apache.org/jira/browse/HARMONY-6664
             Project: Harmony
          Issue Type: Task
          Components: Classlib
    Affects Versions: 5.0M15
            Reporter: Kevin Zhou
            Assignee: Kevin Zhou
             Fix For: 6.0M4


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++) {
            integerList.add(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++) {
            System.out.println("*****INDEX=" + index + "*****");
            timeOfXMLEncoder(5000);
            timeOfXMLEncoder(10000);
            timeOfXMLEncoder(15000);
            timeOfXMLEncoder(20000);
            timeOfXMLEncoder(25000);
        }
    }
}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message