/lightproto

Protobuf compatible code generator

Primary LanguageJavaApache License 2.0Apache-2.0

IMPORTANT

Starting 21st of February 2024, splunk/lightproto project is archived. That means Splunk organization is no longer maintaining and supporting lightproto features/project.

Light Proto serialization

Features

  1. Generate the fastest possible Java code for Protobuf SerDe
  2. 100% Compatible with proto2 definition and wire protocol
  3. Zero-copy deserialization using Netty ByteBuf
  4. Deserialize from direct memory
  5. Zero heap allocations in serialization / deserialization
  6. Lazy deserialization of strings and bytes
  7. Reusable mutable objects
  8. No runtime dependency library
  9. Java based code generator with Maven plugin

Benchmark

java -jar benchmark/target/benchmarks.jar

Benchmark                                         Mode  Cnt   Score    Error   Units
ProtoBenchmark.lightProtoDeserialize             thrpt    3   8.445 ±  1.734  ops/us
ProtoBenchmark.lightProtoSerialize               thrpt    3   4.056 ±  1.628  ops/us
ProtoBenchmark.protobufDeserialize               thrpt    3   2.465 ±  0.682  ops/us
ProtoBenchmark.protobufSerialize                 thrpt    3   2.242 ±  0.186  ops/us
SimpleBenchmark.lightProtoDeserialize            thrpt    3  37.414 ±  4.980  ops/us
SimpleBenchmark.lightProtoDeserializeReadString  thrpt    3  17.367 ±  1.790  ops/us
SimpleBenchmark.lightProtoSerialize              thrpt    3  35.473 ±  6.325  ops/us
SimpleBenchmark.protobufDeserialize              thrpt    3   8.255 ±  1.104  ops/us
SimpleBenchmark.protobufSerialize                thrpt    3  18.960 ±  4.626  ops/us
StringEncodingBenchmark.jdkEncoding              thrpt   10  14.031 ±  0.394  ops/us
StringEncodingBenchmark.jdkEncodingAscii         thrpt   10  19.279 ±  0.448  ops/us
StringEncodingBenchmark.nettyEncoding            thrpt   10  27.273 ±  0.988  ops/us
StringEncodingBenchmark.nettyEncodingAscii       thrpt   10  36.140 ±  0.693  ops/us