hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Hofhansl (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-10320) Avoid ArrayList.iterator() in tight loops
Date Mon, 13 Jan 2014 16:54:53 GMT

    [ https://issues.apache.org/jira/browse/HBASE-10320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13869683#comment-13869683
] 

Lars Hofhansl commented on HBASE-10320:
---------------------------------------

Thanks Stack. I wonder whether the same is true for ArrayLists.
That brings to another thought, the columns list is fixed size and never changed once created,
so why have an ArrayList at all instead of an Array. Then we can use columns.length in the
loop and get this optimization. Will try when I get some time next.


> Avoid ArrayList.iterator() in tight loops
> -----------------------------------------
>
>                 Key: HBASE-10320
>                 URL: https://issues.apache.org/jira/browse/HBASE-10320
>             Project: HBase
>          Issue Type: Bug
>          Components: Performance
>            Reporter: Lars Hofhansl
>         Attachments: 10320-0.94-v2.txt, 10320-0.94.txt
>
>
> I noticed that in a profiler (sampler) run ScanQueryMatcher.setRow(...) showed up at
all.
> In turns out that the expensive part is iterating over the columns in ExcplicitColumnTracker.reset().
I did some microbenchmarks and found that
> {code}
> private ArrayList<X> l;
> ...
> for (int i=0; i<l.size(); i++) {
>    X = l.get(i);
>    ...
> }
> {code}
> Is twice as fast as:
> {code}
> private ArrayList<X> l;
> ...
> for (X : l) {
>    ...
> }
> {code}
> The indexed version asymptotically approaches the iterator version, but even at 1m entries
it is still faster.
> In my tight loop scans this provides for a 5% performance improvement overall when the
ExcplicitColumnTracker is used.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message