[
https://issues.apache.org/jira/browse/THRIFT-4712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16731695#comment-16731695
]
BELUGA BEHR commented on THRIFT-4712:
-------------------------------------
I propose changing the implementation to more closely align with the JDK's
{{ArrayList}} implementation where the "top" variable points at location of
next index in the array, not the the largest index in the array which contains
a value. Also, changed to use JDK's {{Arrays}} class for array manipulation.
Using JMH, the following results were produced:
{code:java}
Benchmark Mode Cnt Score Error Units
BenchmarkStack.javaStack thrpt 60 42991.530 ± 215.511 ops/s
BenchmarkStack.shortStack thrpt 60 82473.152 ± 380.779 ops/s
BenchmarkStack.shortStack2 thrpt 60 121064.717 ± 1097.112 ops/s
BenchmarkStack.shortStackPerf thrpt 60 84236136.257 ± 646025.582 ops/s
BenchmarkStack.shortStack2Perf thrpt 60 84597500.143 ± 673658.214 ops/s
{code}
The first set of tests builds a list of 2048 random short values, pushes them
all into the array, then pops them all. The implementation proposed here was
quite a bit faster. The second set of tests is a cut & paste of the tests in
the Thrift code base into the JMH framework. Eight values are pushed into the
Stack and pops are interwoven into the list of pushes. This new implementation
edges it out (well within the margin or error).
> Improve Performance of ShortStack
> ---------------------------------
>
> Key: THRIFT-4712
> URL: https://issues.apache.org/jira/browse/THRIFT-4712
> Project: Thrift
> Issue Type: Improvement
> Components: Java - Library
> Affects Versions: 0.12.0
> Reporter: BELUGA BEHR
> Priority: Minor
>
> {code:java|title=ShortStack.java}
> /**
> * ShortStack is a short-specific Stack implementation written for the express
> * purpose of very fast operations on TCompactProtocol's field id stack. This
> * implementation performs at least 10x faster than java.util.Stack.
> */
> {code}
> If speed is really important here, the ShortStack can be improved event a bit
> more.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)