[
https://issues.apache.org/jira/browse/HBASE-16612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15483288#comment-15483288
]
Phil Yang commented on HBASE-16612:
-----------------------------------
I ran a benchmark for three methods, codeToType, using an array and using a map.
{code}
public static Type arrayToType(final byte b) {
return ARR[0xff&b];
}
public static Type mapToType(final byte b) {
return MAP.get(b);
}
{code}
Benchmark Mode Cnt Score Error Units
Bench.codeToType(4) thrpt 20 110060552.455 ± 1683158.201 ops/s
Bench.codeToType(14) thrpt 20 89055208.888 ± 1478463.064 ops/s
Bench.arrayToType(4) thrpt 20 298451203.883 ± 8411142.284 ops/s
Bench.arrayToType(14) thrpt 20 299743528.870 ± 5011623.643 ops/s
Bench.mapToType(4) thrpt 20 163042309.727 ± 3548380.929 ops/s
Bench.mapToType(14) thrpt 20 163546726.415 ± 2980305.459 ops/s
4 is code of Put and 14 is code of DeleteFamily which is the max code of normal
types. we can see that array has the best performance.
> Use array to cache Types for KeyValue.Type.codeToType
> -----------------------------------------------------
>
> Key: HBASE-16612
> URL: https://issues.apache.org/jira/browse/HBASE-16612
> Project: HBase
> Issue Type: Bug
> Reporter: Phil Yang
> Assignee: Phil Yang
> Priority: Minor
>
> We don't rely on enum ordinals in KeyValye.Type. We have own code in it. In
> codeToType, we use a loop to find the Type which is not a good idea. We can
> just use an arryay[256] to cache all types.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)