On 1/5/2012 3:00 PM, Endi Sukma Dewata wrote:
About the performance, I compared the results of #9 before and after conversion to Charset, there are some differences but I don't think the difference is significant.
To clarify, in patch #9 I wrote simple tests for measuring the encoding and decoding times for each converter (identified by the tag) to process a set of chars/bytes 10k times. for (int i=0; i<10000; i++) encode(tag, chars); for (int i=0; i<10000; i++) decode(tag, bytes); Each test is done twice, one using Mozilla JSS library and another using our internal library which is based on sun.io before the upgrade and java.nio (Charset) after the upgrade. Below is the result. The 2 numbers in each category correspond to the execution times before and after the upgrade. BMP String Encoding time: - JSS : 210 ms 212 ms - Internal: 281 ms 319 ms BMP String Decoding time: - JSS : 186 ms 196 ms - Internal: 212 ms 149 ms IA5 String Encoding time: - JSS : 42 ms 101 ms - Internal: 46 ms 110 ms IA5 String Decoding time: - JSS : 93 ms 118 ms - Internal: 84 ms 37 ms Printable String Encoding time: - JSS : 26 ms 113 ms - Internal: 48 ms 86 ms Printable String Decoding time: - JSS : 37 ms 49 ms - Internal: 40 ms 38 ms Teletex String Encoding time: - JSS : 18 ms 36 ms - Internal: 43 ms 103 ms Teletex String Decoding time: - JSS : 16 ms 16 ms - Internal: 23 ms 32 ms Universal String Encoding time: - JSS : 74 ms 71 ms - Internal: 30 ms 49 ms Universal String Decoding time: - JSS : 80 ms 76 ms - Internal: 42 ms 18 ms UTF-8 String Encoding time: - JSS : 13 ms 31 ms - Internal: 28 ms 59 ms UTF-8 String Decoding time: - JSS : 37 ms 51 ms - Internal: 46 ms 52 ms The JSS tests are supposed to produce similar numbers before and after the upgrade since they are executing the same code, but that's not always the case, see IA5 encoding and printable encoding times. This is probably due to the changing nature of machine load at the time of the execution. If we look at the internal numbers, some go up and some go down. We cannot really say whether it's an improvement or degradation since the JSS numbers that we use as a baseline aren't always stable. Also since different converter uses different code, there isn't a single number that can describe the overall behavior. So all I can conclude is that the upgrade to the internal library does not show any significant performance degradation that we should be concerned about at this point. If we want to get real statistical numbers (e.g. % improvement over the old library or JSS) we will have to define the test scope, generate better test data, and execute the tests systematically with varying loads. I'm not sure if we want to do that at this stage. -- Endi S. Dewata