[ http://issues.apache.org/jira/browse/DERBY-2118?page=comments#action_12454402 ] Dyre Tjeldvoll commented on DERBY-2118: ---------------------------------------
Thank you for providing the patch. For what it is worth: I ran same test on your patch and these are the numbers that I see: bln: 23049.178 exp: 23381.489 %chg: 1.441 f(1,18): 5.598 All tests are run like this: /usr/local/java/jdk1.6/bin/java -Dderby.storage.pageCacheSize=12500 TestClient -d org.apache.derby.jdbc.EmbeddedDriver -u 'jdbc:derby:/tmp/tdb;create=true;territory=en_US' -a select -r 100 -c 1 So if the tests pass, I would like to see this change committed. > Change some boundary checks in ArrayInputStream to ASSERTs to improve > performance > --------------------------------------------------------------------------------- > > Key: DERBY-2118 > URL: http://issues.apache.org/jira/browse/DERBY-2118 > Project: Derby > Issue Type: Improvement > Components: Performance > Affects Versions: 10.2.1.6 > Reporter: Dyre Tjeldvoll > Priority: Trivial > Fix For: 10.3.0.0 > > Attachments: d2018_clearlimit_cleanup_diff.txt, derby-2118.diff, > derby-2118.stat, derby-2118.v2.diff > > > Profiling shows that a significant amount of CPU is spent doing boundary > checking in ArrayInputStream.setPosition() and ArrayInputStream.setLimit(). > These checks appear to be there to detect error conditions, so it seems more > appropriate to make them ASSERTs. Especially since they are so expensive. > DTrace analysis seems to confirm that these methods get called very > frequently: > Knut Anders Hatlen wrote the following in a message on derby-dev: > FYI, I just ran the DERBY-1961 test clients and traced them with a > DTrace script that printed how often each method was called. For the > join client, ArrayInputStream.setPosition() was the most frequently > called method (43837.7 calls/tx). For the single-record select client, > it was third (58.4 calls/tx), only beaten by Object.<init>() and > DDMWriter.ensureLength(). I think this means that setPosition() is the > engine method that is most frequently called, at least in read-mostly > transactions. ArrayInputStream.setLimit() also appeared near the top > of the list. See http://wiki.apache.org/db-derby/Derby1961MethodCalls > for the details. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
