cpp-serialization-benchmark - Comparison of C++ Serialization Libraries for Graph Data

  •        11

This benchmark suite accompanies the public release of the Cista++ serialization library. This repository contains benchmarks for C++ (binary & high performance) serialization libraries. The goal was to create a benchmark based on a non-trivial data structure. In this case, we serialize, deserialize and traverse a graph (nodes and edges). Since the goal was to have a data structure containing pointers, we choose an "object oriented" representation of a graph instead of a simple adjacency matrix. Some frameworks do no support cyclic data structures. Thus, instead of having node pointers in the edge object, we just reference start and destination node by their index. Benchmarks are based on the Google Benchmark framework.

https://github.com/felixguendling/cpp-serialization-benchmark

Tags
Implementation
License
Platform

   




Related Projects

cista - Cista is a simple, high-performance, zero-copy C++ serialization & reflection library.

  •    C++

Cista++ is a simple, open source (MIT license) C++17 compatible way of (de-)serializing C++ data structures. Single header - no dependencies. No macros. No source code generation.

cpp-serializers - Benchmark comparing various data serialization libraries (thrift, protobuf etc

  •    C++

Compare various data serialization libraries for C++. This project does not have any external library dependencies. All (boost, thrift etc.) needed libraries are downloaded and built automatically, but you need enough free disk space to build all components. To build this project you need a compiler that supports C++11 features. Project was tested with GCC 4.8.2 (Ubuntu 14.04).

yyjson - The fastest JSON library in C

  •    C

A high performance JSON library written in ANSI C. The simdjson's new On Demand API is faster if most JSON fields is known at compile time. This benchmark project only checks the DOM API, new benchmark will be added later.

ponder - C++ reflection library

  •    C++

V1 replaced Boost with C++11. V2 added Lua bindings. V3 refactored to remove some warts, ease future development, and re-add serialisation. API is evolving. Ponder is a C++ multi-purpose reflection library. It provides an abstraction for most of the high-level concepts of C++: classes, enumerations, functions, properties.

thread-pool-cpp - High performance C++11 thread pool

  •    C++

Example run: Post job to thread pool is much faster than for boost::asio based thread pool. See benchmark/benchmark.cpp for benchmark code.


cereal - A C++11 library for serialization

  •    C++

cereal is a header-only C++11 serialization library. cereal takes arbitrary data types and reversibly turns them into different representations, such as compact binary encodings, XML, or JSON. cereal was designed to be fast, light-weight, and easy to extend - it has no external dependencies and can be easily bundled with other code or used standalone. Looking for more information on how cereal works and its documentation? Visit cereal's web page to get the latest information.

fast_jsonapi - A lightning fast JSON:API serializer for Ruby Objects.

  •    Ruby

A lightning fast JSON:API serializer for Ruby Objects. We compare serialization times with Active Model Serializer as part of RSpec performance tests included on this library. We want to ensure that with every change on this library, serialization time is at least 25 times faster than Active Model Serializers on up to current benchmark of 1000 records. Please read the performance document for any questions related to methodology.

Cereal - Swift object serialization

  •    Swift

Cereal is a serialization framework built for Swift. Its intended as a substitution for NSCoding to allow advanced Swift features. With NSCoding, you cannot encode or decode a Swift struct, enum, or generic class. Cereal solves this issue through deferred decoding with generics, and a protocol that doesn't depend on NSObjectProtocol. Please note that the data stored in Cereal 2.0 is different from Cereal 1.3, and while the API is the same they are not compatible. Do not expect data written by 1.3 to be readable by 2.0.

srsly - 🦉 Modern high-performance serialization utilities for Python (JSON, MessagePack, Pickle)

  •    Python

This package bundles some of the best Python serialization libraries into one standalone package, with a high-level API that makes it easy to write code that's correct across platforms and Pythons. This allows us to provide all the serialization utilities we need in a single binary wheel. Currently supports JSON, JSONL, MessagePack, Pickle and YAML. Serialization is hard, especially across Python versions and multiple platforms. After dealing with many subtle bugs over the years (encodings, locales, large files) our libraries like spaCy and Prodigy have steadily grown a number of utility functions to wrap the multiple serialization formats we need to support (especially json, msgpack and pickle). These wrapping functions ended up duplicated across our codebases, so we wanted to put them in one place.

FastBinaryEncoding - Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift

  •    C++

Fast Binary Encoding allows to describe any domain models, business objects, complex data structures, client/server requests & responses and generate native code for different programming languages and platforms. To use Fast Binary Encoding you should provide a domain model (aka business objects). A domain model is a set of enums, flags and structures that relate to each other and might be aggregated in some hierarchy.

jvm-serializers - Benchmark comparing serialization libraries on the JVM

  •    Java

Benchmark comparing serialization libraries on the JVM

flatbuffers - Memory Efficient Serialization Library

  •    C++

Memory Efficient Serialization Library

FlatBuffersSwift - This project brings FlatBuffers (an efficient cross platform serialization library) to Swift

  •    Swift

This project brings FlatBuffers (an efficient cross platform serialization library) to Swift.

colfer - binary serialization format

  •    Go

Colfer is a binary serialization format optimized for speed and size.The project's compiler colf(1) generates source code from schema definitions to marshal and unmarshall data structures.

hprose-golang - Hprose is a cross-language RPC. This project is Hprose 2.0 for Golang.

  •    Go

Hprose is a High Performance Remote Object Service Engine.It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.

hprose-java - Hprose is a cross-language RPC. This project is Hprose 2.0 for Java

  •    Java

Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system. Hprose supports many programming languages, for example: * AAuto Quicker * ActionScript * ASP * C++ * Dart * Delphi/Free Pascal * dotNET(C#, Visual Basic...) * Golang * Java * JavaScript * Node.js * Objective-C * Perl * PHP * Python * Ruby * ... Through Hprose, You can conveniently and efficiently intercommunicate between those programming languages. This project is the implementation of Hprose for Java.

hprose-php - Hprose is a cross-language RPC. This project is Hprose 2.0 for PHP

  •    PHP

Hprose is a High Performance Remote Object Service Engine.It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.

go-web-framework-benchmark - :zap: Go web framework benchmark

  •    Go

This benchmark suite aims to compare the performance of Go web frameworks. It is inspired by Go HTTP Router Benchmark but this benchmark suite is different with that. Go HTTP Router Benchmark suit aims to compare the performance of routers but this Benchmark suit aims to compare whole HTTP request processing.

JSONCPP - A C++ library for interacting with JSON

  •    C++

JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization steps, making it a convenient format to store user input files.

Ceras - Universal binary serializer for a wide variety of scenarios https://discord.gg/FGaCX4c

  •    CSharp

Ceras is a binary serializer. It converts any object into a byte[] and back. It goes above and beyond in terms of features, speed, and comfort. Supports reference loops, large/complicated inheritance chains, splitting objects into parts, ... Ceras generally ranks at the top end of the performance spectrum, together with NetSerializer and MessagePack-CSharp. To get an idea of how Ceras performs here are the preliminary benchmark results. The resulting binary size is about the same as MessagePack-CSharp.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.