You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Chetan Mehrotra (JIRA)" <ji...@apache.org> on 2016/06/02 11:40:59 UTC
[jira] [Comment Edited] (OAK-4421) Optimize Revison fromString and
toString implementation
[ https://issues.apache.org/jira/browse/OAK-4421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15312154#comment-15312154 ]
Chetan Mehrotra edited comment on OAK-4421 at 6/2/16 11:40 AM:
---------------------------------------------------------------
To measure the impact of any change I have implemented a benchmark based on JMH [1] which takes care of warmup and coming up with more reliable numbers. The benchmark module is currently at [2]
h3. Optimized Revision.toString
Below is the benchmark result where optimized toString is compared against the default and shows much higher throughput
{noformat}
# Run complete. Total time: 00:00:38
Benchmark Mode Cnt Score Error Units
RevisionAsStringBenchmark.revisionAsStringDefault thrpt 10 9437304.099 ± 314196.163 ops/s
RevisionAsStringBenchmark.revisionAsStringNew thrpt 10 10710501.639 ± 543753.587 ops/s
{noformat}
h3. Optimized Revision.fromString
Below is the benchmark result where optimized fromString is compared against the default and shows much higher throughput
{noformat}
# Run complete. Total time: 00:00:37
Benchmark Mode Cnt Score Error Units
RevisionFromStringBenchmark.revisionFromStringDefault thrpt 10 6385722.885 ± 153695.281 ops/s
RevisionFromStringBenchmark.revisionFromStringNew thrpt 10 31986092.234 ± 1632867.546 ops/s
{noformat}
[1] http://openjdk.java.net/projects/code-tools/jmh/
[2] https://github.com/chetanmeh/oak-jmh
was (Author: chetanm):
To measure the impact of any change I have implemented a benchmark based on JMH [1] which takes care of warmup and coming up with more reliable numbers. The benchmark module is currently at [2]
h3. Optimized Revision.toString
Below is the benchmark result where optimized toString is compared against the default and shows 400% better throughput
{noformat}
# Run complete. Total time: 00:00:26
Benchmark Mode Cnt Score Error Units
RevisionFromStringBenchmark.revisionFromStringDefault thrpt 5 10911800.194 ± 1355884.153 ops/s
RevisionFromStringBenchmark.revisionFromStringNew thrpt 5 58061940.924 ± 6897525.993 ops/s
{noformat}
h3. Optimized Revision.fromString
Below is the benchmark result where optimized fromString is compared against the default and shows 400% better throughput
{noformat}
# Run complete. Total time: 00:00:38
Benchmark Mode Cnt Score Error Units
RevisionFromStringBenchmark.revisionFromStringDefault thrpt 10 10802847.895 ± 318041.329 ops/s
RevisionFromStringBenchmark.revisionFromStringNew thrpt 10 56397389.037 ± 5161688.259 ops/s
{noformat}
[1] http://openjdk.java.net/projects/code-tools/jmh/
[2] https://github.com/chetanmeh/oak-jmh
> Optimize Revison fromString and toString implementation
> -------------------------------------------------------
>
> Key: OAK-4421
> URL: https://issues.apache.org/jira/browse/OAK-4421
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: documentmk
> Reporter: Chetan Mehrotra
> Assignee: Chetan Mehrotra
> Fix For: 1.6
>
> Attachments: OAK-4421-v1.patch
>
>
> Current implementation of Revision {{fromString}} and {{toString}} make use of std JDK API to perform string manipulation. While running some performance test it was seen that these 2 methods are called quite frequently and that adds up to some decent times. Further they also generate quite a bit of short lived objects.
> It would be worthwhile to perform a micro benchmark of these method and optimize them further such that they perform better and also generate less garbage. The micro optimized code would be bit more complex but if performance numbers are better we can look into changing the current implementation
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)