hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Gray (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-1252) Make atomic increment perform a binary increment
Date Tue, 10 Mar 2009 19:34:50 GMT

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

Jonathan Gray commented on HBASE-1252:
--------------------------------------

Trying my best to get compiler optimizations out the way... Anyways, the binary increment
means we can do things in place down the road and also that we don't have to care about the
size of the existing value.

Current results with optimizations for larger incrementing amounts:

{code}
incrementAsLong : Incremented 100000 times by 1 in 92 ms (current value is 100000)
incrementAsBytes : Incremened 100000 times by 1 in 11 ms (current value is 100000)

incrementAsLong : Incremented 100000 times by 10 in 90 ms (current value is 1000000)
incrementAsBytes : Incremened 100000 times by 10 in 15 ms (current value is 1000000)

incrementAsLong : Incremented 100000 times by 100 in 91 ms (current value is 10000000)
incrementAsBytes : Incremened 100000 times by 100 in 47 ms (current value is 10000000)

incrementAsLong : Incremented 100000 times by 1000 in 91 ms (current value is 100000000)
incrementAsBytes : Incremened 100000 times by 1000 in 98 ms (current value is 100000000)

incrementAsLong : Incremented 100000 times by 10000 in 90 ms (current value is 1000000000)
incrementAsBytes : Incremened 100000 times by 10000 in 35 ms (current value is 1000000000)

incrementAsLong : Incremented 100000 times by 100000 in 91 ms (current value is 10000000000)
incrementAsBytes : Incremened 100000 times by 100000 in 136 ms (current value is 10000000000)

incrementAsLong : Incremented 100000 times by 1000000 in 90 ms (current value is 100000000000)
incrementAsBytes : Incremened 100000 times by 1000000 in 75 ms (current value is 100000000000)
{code}

> Make atomic increment perform a binary increment
> ------------------------------------------------
>
>                 Key: HBASE-1252
>                 URL: https://issues.apache.org/jira/browse/HBASE-1252
>             Project: Hadoop HBase
>          Issue Type: Improvement
>    Affects Versions: 0.19.0
>            Reporter: Jonathan Gray
>            Assignee: Jonathan Gray
>            Priority: Minor
>             Fix For: 0.19.1, 0.20.0
>
>
> A few issues related to recently committed HBASE-803
> - The HTable api still takes an integer amount rather than long, mismatching HRI.
> - Binary increments are 10 times faster for small amounts than going Bytes.toLong, +=
amount, Bytes.toBytes.  Twice as fast for large amounts (binary incrementor just loops a bunch
of single increments, though there is plenty of room for optimizations in my current implementation)
> - Using a binary increment means we don't have to worry about the size of the value.
 If someone wants a 16 byte value they can have it, just have to initialize as such.  If no
existing value exists, will default to long/8 bytes.  Only odd behavior will be what happens
when you are at the max value, currently will just stay at all 11111 binary.  Could actually
grow the byte[] but then we can't do things in place. I'm okay with leaving it like that,
not exactly sure what the current implementation would do, throw an exception or wrap?
> - Using binary incrementing, we can directly manipulate values in the memcache rather
than sending updates with the same timestamp.  I think we should hold off on doing this until
HBASE-1234 goes in.  We'll then have to deal directly with hlog.  (this issue is not going
to address this)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message