[ 
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

        

Reply via email to