[ http://issues.apache.org/jira/browse/DERBY-2118?page=comments#action_12453889 ] Dyre Tjeldvoll commented on DERBY-2118: ---------------------------------------
The requested performance numbers: Average of ten 100 sec runs on trunk vs average of ten 100 sec runs with patch: Select: [EMAIL PROTECTED] fstat select_bln479573.log select_ASSERT479573.log |dc bln: 23099.613 exp: 23516.291 %chg: 1.803 f(1,18): 10.741 Join: [EMAIL PROTECTED] fstat join_bln479573.log join_ASSERT479573.log |dc bln: 89.448 exp: 91.268 %chg: 2.034 f(1,18): 5.345 Inlining setPosition (not setLimit) without any check (join load only): [EMAIL PROTECTED] fstat join_bln479573.log join_inline479573.log |dc bln: 89.448 exp: 92.469 %chg: 3.377 f(1,18): 16.313 > 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: 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
