Updated Branches:
  refs/heads/trunk 66f0d6b73 -> dbe53c811

improve DecimalSerializer performance


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dbe53c81
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dbe53c81
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dbe53c81

Branch: refs/heads/trunk
Commit: dbe53c811fea105f0a98adbb21850348ce37d336
Parents: 66f0d6b
Author: Jonathan Ellis <[email protected]>
Authored: Thu Aug 1 12:06:18 2013 -0500
Committer: Jonathan Ellis <[email protected]>
Committed: Thu Aug 1 12:06:39 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                          |  1 +
 .../cassandra/serializers/DecimalSerializer.java     | 15 ++++++---------
 2 files changed, 7 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbe53c81/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ff3ea41..a0cd6af 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.0-rc1
+ * improve DecimalSerializer performance (CASSANDRA-5837)
  * fix potential spurious wakeup in AsyncOneResponse (CASSANDRA-5690)
  * fix schema-related trigger issues (CASSANDRA-5774)
  * Better validation when accessing CQL3 table from thrift (CASSANDRA-5138)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbe53c81/src/java/org/apache/cassandra/serializers/DecimalSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/DecimalSerializer.java 
b/src/java/org/apache/cassandra/serializers/DecimalSerializer.java
index 0ffea9e..819789f 100644
--- a/src/java/org/apache/cassandra/serializers/DecimalSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/DecimalSerializer.java
@@ -48,17 +48,14 @@ public class DecimalSerializer implements 
TypeSerializer<BigDecimal>
             return ByteBufferUtil.EMPTY_BYTE_BUFFER;
 
         BigInteger bi = value.unscaledValue();
-        Integer scale = value.scale();
+        int scale = value.scale();
         byte[] bibytes = bi.toByteArray();
-        byte[] sbytes = ByteBufferUtil.bytes(scale).array();
-        byte[] bytes = new byte[bi.toByteArray().length + 4];
 
-        for (int i = 0; i < 4; i++)
-            bytes[i] = sbytes[i];
-        for (int i = 4; i < bibytes.length + 4; i++)
-            bytes[i] = bibytes[i - 4];
-
-        return ByteBuffer.wrap(bytes);
+        ByteBuffer bytes = ByteBuffer.allocate(4 + bibytes.length);
+        bytes.putInt(scale);
+        bytes.put(bibytes);
+        bytes.rewind();
+        return bytes;
     }
 
     public void validate(ByteBuffer bytes) throws MarshalException

Reply via email to