amallia / VByte

Variable-length integer encoding library using a little-endian representation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VByte

Build Status

Variable-length integer encoding, using a little-endian representation.

Usage

#include "vbyte/vbyte.hpp"

// encode
std::vector<uint32_t> values = {1, 2, 512, 16384, 5, 8};
std::vector<uint8_t>  buf;
vbyte::encode(buf, values);

// decode
std::vector<uint32_t> decoded_values;
vbyte::decode(decoded_values, buf);

Benchmarks

// 2018-10-16 03:07:18
// Running ./bench/vbyte_bench
// Run on (4 X 2400 MHz CPU s)
// CPU Caches:
//   L1 Data 32K (x2)
//   L1 Instruction 32K (x2)
//   L2 Unified 262K (x2)
//   L3 Unified 3145K (x1)
// ------------------------------------------------------
// Benchmark               Time           CPU Iterations
// ------------------------------------------------------
// encode/1024         16018 ns      15960 ns      43754
// encode/4096         55327 ns      55183 ns      11825
// encode/32768       427390 ns     426373 ns       1632
// encode/262144     3487180 ns    3439903 ns        206
// encode/1048576   14013011 ns   13969592 ns         49
// decode/1024         11048 ns      10934 ns      64067
// decode/4096         31099 ns      30815 ns      23624
// decode/32768       209016 ns     208083 ns       3366
// decode/262144     1898773 ns    1891326 ns        371
// decode/1048576    8605324 ns    8574962 ns         78

About

Variable-length integer encoding library using a little-endian representation.

License:Apache License 2.0


Languages

Language:C++ 82.3%Language:CMake 17.7%