db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel John Debrunner (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2118) Change some boundary checks in ArrayInputStream to ASSERTs to improve performance
Date Wed, 29 Nov 2006 14:52:21 GMT
    [ http://issues.apache.org/jira/browse/DERBY-2118?page=comments#action_12454332 ] 
            
Daniel John Debrunner commented on DERBY-2118:
----------------------------------------------

Just an FYI - with similar changes and the DERBY-1961 test program and Sun's 1.5 JRE on Linux
I was seeing possibly 1-2% improvement, almost lost in the noise. Just switching to IBM's
1.5 JRE improved the numbers by *41%* compared to the Sun JRE with the base (no patch). Thus
it would be good to see the effect of these changes (or similar improvements) on multiple
JREs to see how different JITs handle the code. I'll re-run the tests on the IBM JRE to see
how much the changes effect the performance, maybe that JIT already does a good enough job.

> 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

        

Mime
View raw message