{"id":19654286,"url":"https://github.com/aimenux/binaryserializationbenchdemo","last_synced_at":"2026-06-18T09:31:05.978Z","repository":{"id":116559375,"uuid":"397403987","full_name":"aimenux/BinarySerializationBenchDemo","owner":"aimenux","description":"Benchmarking various ways of binary serialization / deserialization","archived":false,"fork":false,"pushed_at":"2021-08-19T21:56:19.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-27T01:54:34.070Z","etag":null,"topics":["benchmarkdotnet","binaryformatter","binaryserializer","grobuf","net50","netstandard21","protobuf-net","vs19"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aimenux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-17T22:14:52.000Z","updated_at":"2021-08-19T21:57:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"e5e5dbd4-4404-461c-873f-488681a756f8","html_url":"https://github.com/aimenux/BinarySerializationBenchDemo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aimenux/BinarySerializationBenchDemo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aimenux%2FBinarySerializationBenchDemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aimenux%2FBinarySerializationBenchDemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aimenux%2FBinarySerializationBenchDemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aimenux%2FBinarySerializationBenchDemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aimenux","download_url":"https://codeload.github.com/aimenux/BinarySerializationBenchDemo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aimenux%2FBinarySerializationBenchDemo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34485162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmarkdotnet","binaryformatter","binaryserializer","grobuf","net50","netstandard21","protobuf-net","vs19"],"created_at":"2024-11-11T15:16:50.689Z","updated_at":"2026-06-18T09:31:05.919Z","avatar_url":"https://github.com/aimenux.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿[![.NET](https://github.com/aimenux/BinarySerializationBenchDemo/actions/workflows/ci.yml/badge.svg)](https://github.com/aimenux/BinarySerializationBenchDemo/actions/workflows/ci.yml)\n\n# BinarySerializationBenchDemo\n```\nBenchmarking various ways of binary serialization / deserialization\n```\n\nIn this demo, i m using [BenchmarkDotNet](https://github.com/dotnet/BenchmarkDotNet) library in order to benchmark binary serialization / deserialization based on :\n\u003e\n\u003e :one: Built-In Library [BinaryFormatter](https://docs.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter)\n\u003e\n\u003e :two: Third-Party Library [BinarySerializer](https://github.com/jefffhaynes/BinarySerializer)\n\u003e\n\u003e :three: Third-Party Library [GroBuf](https://github.com/skbkontur/GroBuf)\n\u003e\n\u003e :four: Third-Party Library [ProtoBuf](https://github.com/protobuf-net/protobuf-net)\n\u003e\n\nIn order to run benchmarks, type this command in your favorite terminal :\n\u003e\n\u003e :writing_hand: `.\\App.exe`\n\u003e\n\n```\n|                       Method |       Categories | Length |         Mean |       Error |       StdDev |       Median |          Min |          Max | Rank |   Gen 0 |  Gen 1 | Allocated |\n|----------------------------- |----------------- |------- |-------------:|------------:|-------------:|-------------:|-------------:|-------------:|-----:|--------:|-------:|----------:|\n| SerializeAndDeserializeThree |           GroBuf |     16 |     450.3 ns |    13.87 ns |     40.01 ns |     434.2 ns |     406.9 ns |     559.6 ns |    1 |  0.2732 |      - |   1,144 B |\n|  SerializeAndDeserializeFour |         ProtoBuf |     16 |   1,236.8 ns |    24.51 ns |     63.71 ns |   1,220.6 ns |   1,144.5 ns |   1,410.3 ns |    2 |  0.1698 |      - |     712 B |\n|   SerializeAndDeserializeOne |  BinaryFormatter |     16 |  14,622.9 ns |   290.52 ns |    599.96 ns |  14,517.3 ns |  13,641.9 ns |  16,208.4 ns |    3 |  3.0670 |      - |  12,848 B |\n|   SerializeAndDeserializeTwo | BinarySerializer |     16 |  38,458.9 ns |   767.05 ns |  2,060.64 ns |  37,903.0 ns |  35,388.6 ns |  43,984.1 ns |    4 | 16.6626 |      - |  69,728 B |\n|                              |                  |        |              |             |              |              |              |              |      |         |        |           |\n| SerializeAndDeserializeThree |           GroBuf |     32 |     467.7 ns |     9.24 ns |     25.45 ns |     459.9 ns |     431.5 ns |     542.3 ns |    1 |  0.3877 |      - |   1,624 B |\n|  SerializeAndDeserializeFour |         ProtoBuf |     32 |   1,278.6 ns |    20.93 ns |     16.34 ns |   1,280.1 ns |   1,240.6 ns |   1,298.5 ns |    2 |  0.2079 |      - |     872 B |\n|   SerializeAndDeserializeOne |  BinaryFormatter |     32 |  14,235.0 ns |   274.15 ns |    662.10 ns |  13,992.1 ns |  13,438.8 ns |  16,078.3 ns |    3 |  3.3569 |      - |  14,057 B |\n|   SerializeAndDeserializeTwo | BinarySerializer |     32 |  56,306.2 ns | 1,072.06 ns |  2,284.65 ns |  55,673.9 ns |  52,943.5 ns |  62,155.2 ns |    4 | 21.2402 |      - |  88,992 B |\n|                              |                  |        |              |             |              |              |              |              |      |         |        |           |\n| SerializeAndDeserializeThree |           GroBuf |     64 |     525.5 ns |    10.37 ns |     25.24 ns |     516.8 ns |     487.2 ns |     587.5 ns |    1 |  0.6170 |      - |   2,584 B |\n|  SerializeAndDeserializeFour |         ProtoBuf |     64 |   1,373.4 ns |    29.51 ns |     84.67 ns |   1,343.1 ns |   1,253.6 ns |   1,604.3 ns |    2 |  0.3033 |      - |   1,272 B |\n|   SerializeAndDeserializeOne |  BinaryFormatter |     64 |  14,290.0 ns |   281.82 ns |    575.69 ns |  14,165.9 ns |  13,170.8 ns |  15,699.2 ns |    3 |  3.4332 |      - |  14,377 B |\n|   SerializeAndDeserializeTwo | BinarySerializer |     64 |  86,683.5 ns | 1,730.80 ns |  4,589.85 ns |  85,030.1 ns |  79,312.7 ns |  99,575.3 ns |    4 | 30.5176 |      - | 128,056 B |\n|                              |                  |        |              |             |              |              |              |              |      |         |        |           |\n| SerializeAndDeserializeThree |           GroBuf |    128 |     630.9 ns |    12.55 ns |     14.94 ns |     626.9 ns |     613.0 ns |     663.0 ns |    1 |  1.0767 |      - |   4,504 B |\n|  SerializeAndDeserializeFour |         ProtoBuf |    128 |   1,594.5 ns |    43.35 ns |    127.13 ns |   1,575.5 ns |   1,406.4 ns |   1,969.3 ns |    2 |  0.5341 |      - |   2,240 B |\n|   SerializeAndDeserializeOne |  BinaryFormatter |    128 |  14,171.3 ns |   276.76 ns |    454.73 ns |  14,073.8 ns |  13,502.3 ns |  15,347.4 ns |    3 |  4.0588 |      - |  17,089 B |\n|   SerializeAndDeserializeTwo | BinarySerializer |    128 | 152,681.3 ns | 2,844.81 ns |  4,830.70 ns | 151,738.4 ns | 145,723.4 ns | 166,943.5 ns |    4 | 49.0723 | 0.2441 | 206,160 B |\n|                              |                  |        |              |             |              |              |              |              |      |         |        |           |\n| SerializeAndDeserializeThree |           GroBuf |    256 |     913.8 ns |    12.98 ns |     10.14 ns |     914.3 ns |     897.4 ns |     930.8 ns |    1 |  1.9932 |      - |   8,344 B |\n|  SerializeAndDeserializeFour |         ProtoBuf |    256 |   1,967.4 ns |    36.16 ns |     60.41 ns |   1,968.9 ns |   1,847.6 ns |   2,098.1 ns |    2 |  0.9937 |      - |   4,160 B |\n|   SerializeAndDeserializeOne |  BinaryFormatter |    256 |  15,954.0 ns |   315.77 ns |    585.31 ns |  15,765.1 ns |  14,973.8 ns |  17,435.6 ns |    3 |  4.3640 |      - |  18,369 B |\n|   SerializeAndDeserializeTwo | BinarySerializer |    256 | 292,467.4 ns | 5,573.21 ns | 15,067.49 ns | 289,766.8 ns | 269,638.6 ns | 344,988.4 ns |    4 | 86.4258 |      - | 362,344 B |\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faimenux%2Fbinaryserializationbenchdemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faimenux%2Fbinaryserializationbenchdemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faimenux%2Fbinaryserializationbenchdemo/lists"}