You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by ma...@apache.org on 2010/03/12 19:06:45 UTC
svn commit: r922373 - in /hadoop/avro/trunk: CHANGES.txt
lang/c/src/encoding_binary.c
Author: massie
Date: Fri Mar 12 18:06:45 2010
New Revision: 922373
URL: http://svn.apache.org/viewvc?rev=922373&view=rev
Log:
AVRO-460. Performance improvement to write_long(). Contributed by Bruce Mitchener.
Modified:
hadoop/avro/trunk/CHANGES.txt
hadoop/avro/trunk/lang/c/src/encoding_binary.c
Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=922373&r1=922372&r2=922373&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Fri Mar 12 18:06:45 2010
@@ -36,6 +36,8 @@ Avro 1.3.1 (unreleased)
AVRO-440. config.h output not correctly used (Bruce Mitchener via massie)
+ AVRO-460. Performance improvement to write_long() (Bruce Mitchener via massie)
+
BUG FIXES
AVRO-424. Fix the specification of the deflate codec.
Modified: hadoop/avro/trunk/lang/c/src/encoding_binary.c
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/c/src/encoding_binary.c?rev=922373&r1=922372&r2=922373&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/c/src/encoding_binary.c (original)
+++ hadoop/avro/trunk/lang/c/src/encoding_binary.c Fri Mar 12 18:06:45 2010
@@ -63,15 +63,15 @@ static int skip_long(avro_reader_t reade
static int write_long(avro_writer_t writer, int64_t l)
{
- uint8_t b;
+ char buf[MAX_VARINT_BUF_SIZE];
+ uint8_t bytes_written = 0;
uint64_t n = (l << 1) ^ (l >> 63);
while (n & ~0x7F) {
- b = ((((uint8_t) n) & 0x7F) | 0x80);
- AVRO_WRITE(writer, &b, 1);
+ buf[bytes_written++] = (char)((((uint8_t) n) & 0x7F) | 0x80);
n >>= 7;
}
- b = (uint8_t) n;
- AVRO_WRITE(writer, &b, 1);
+ buf[bytes_written++] = (char)n;
+ AVRO_WRITE(writer, buf, bytes_written);
return 0;
}