[ 
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

        

Reply via email to