Benchmarks of Go serialization methods

Benchmarks of Go serialization methods

Gitter chat

This is a test suite for benchmarking various Go serialization methods.

Tested serialization methods

Running the benchmarks

go get -u -t
go test -bench='.*' ./

To update the table in the README:

./stats.sh

Recommendation

If performance, correctness and interoperability are the most important factors, gogoprotobuf is currently the best choice. It does require a pre-processing step (eg. via Go 1.4's "go generate" command).

But as always, make your own choice based on your requirements.

Data

The data being serialized is the following structure with randomly generated values:

type A struct {
    Name     string
    BirthDay time.Time
    Phone    string
    Siblings int
    Spouse   bool
    Money    float64
}

Results

2020-12-30 Results with Go 1.15.6 windows/amd64 on a 3.4 GHz Intel Core i7 16GB

benchmark iter time/iter bytes/op allocs/op tt.sec tt.kb ns/alloc
BenchmarkGotinyMarshal-8 8823405 130 ns/op 48 0 1.15 42352 0.00
BenchmarkGotinyUnmarshal-8 4536901 267 ns/op 48 112 1.21 21777 2.38
BenchmarkGotinyNoTimeMarshal-8 9448945 136 ns/op 48 0 1.29 45354 0.00
BenchmarkGotinyNoTimeUnmarshal-8 4878072 241 ns/op 48 96 1.18 23414 2.51
BenchmarkMsgpMarshal-8 6896487 174 ns/op 97 128 1.20 66895 1.36
BenchmarkMsgpUnmarshal-8 3833878 314 ns/op 97 112 1.20 37188 2.80
BenchmarkVmihailencoMsgpackMarshal-8 1000000 1116 ns/op 100 400 1.12 10000 2.79
BenchmarkVmihailencoMsgpackUnmarshal-8 727237 1722 ns/op 100 416 1.25 7272 4.14
BenchmarkJsonMarshal-8 555409 2212 ns/op 150 208 1.23 8331 10.63
BenchmarkJsonUnmarshal-8 262119 4574 ns/op 149 391 1.20 3905 11.70
BenchmarkJsonIterMarshal-8 521743 2392 ns/op 139 248 1.25 7252 9.65
BenchmarkJsonIterUnmarshal-8 648538 1874 ns/op 139 264 1.22 9014 7.10
BenchmarkEasyJsonMarshal-8 705790 1789 ns/op 149 895 1.26 10516 2.00
BenchmarkEasyJsonUnmarshal-8 705720 1724 ns/op 150 288 1.22 10585 5.99
BenchmarkBsonMarshal-8 1000000 1171 ns/op 110 392 1.17 11000 2.99
BenchmarkBsonUnmarshal-8 749938 1694 ns/op 110 232 1.27 8249 7.30
BenchmarkGobMarshal-8 1414255 834 ns/op 63 48 1.18 8994 17.38
BenchmarkGobUnmarshal-8 1323007 900 ns/op 63 112 1.19 8414 8.04
BenchmarkXDRMarshal-8 705927 1836 ns/op 92 456 1.30 6494 4.03
BenchmarkXDRUnmarshal-8 489799 2255 ns/op 90 235 1.10 4452 9.60
BenchmarkUgorjiCodecMsgpackMarshal-8 959930 1422 ns/op 91 1312 1.37 8735 1.08
BenchmarkUgorjiCodecMsgpackUnmarshal-8 857185 1398 ns/op 91 496 1.20 7800 2.82
BenchmarkUgorjiCodecBincMarshal-8 857001 1468 ns/op 95 1328 1.26 8141 1.11
BenchmarkUgorjiCodecBincUnmarshal-8 705873 1587 ns/op 95 656 1.12 6705 2.42
BenchmarkSerealMarshal-8 420970 2936 ns/op 132 904 1.24 5556 3.25
BenchmarkSerealUnmarshal-8 363639 3377 ns/op 132 1008 1.23 4800 3.35
BenchmarkBinaryMarshal-8 922891 1364 ns/op 61 320 1.26 5629 4.26
BenchmarkBinaryUnmarshal-8 799935 1511 ns/op 61 320 1.21 4879 4.72
BenchmarkFlatBuffersMarshal-8 4116678 298 ns/op 95 0 1.23 39190 0.00
BenchmarkFlatBuffersUnmarshal-8 4444442 265 ns/op 95 112 1.18 42311 2.37
BenchmarkCapNProtoMarshal-8 3183031 386 ns/op 96 56 1.23 30557 6.89
BenchmarkCapNProtoUnmarshal-8 2724205 443 ns/op 96 200 1.21 26152 2.21
BenchmarkCapNProto2Marshal-8 2035632 586 ns/op 96 244 1.19 19542 2.40
BenchmarkCapNProto2Unmarshal-8 1560622 778 ns/op 96 320 1.21 14981 2.43
BenchmarkHproseMarshal-8 1313616 915 ns/op 85 402 1.20 11205 2.28
BenchmarkHproseUnmarshal-8 960014 1195 ns/op 85 319 1.15 8188 3.75
BenchmarkHprose2Marshal-8 2063629 604 ns/op 85 0 1.25 17602 0.00
BenchmarkHprose2Unmarshal-8 2015106 609 ns/op 85 144 1.23 17188 4.23
BenchmarkProtobufMarshal-8 1537672 801 ns/op 52 152 1.23 7995 5.27
BenchmarkProtobufUnmarshal-8 1533541 790 ns/op 52 192 1.21 7974 4.11
BenchmarkGoprotobufMarshal-8 3545023 317 ns/op 53 64 1.12 18788 4.95
BenchmarkGoprotobufUnmarshal-8 2456142 481 ns/op 53 168 1.18 13017 2.86
BenchmarkGogoprotobufMarshal-8 8163325 147 ns/op 53 64 1.20 43265 2.30
BenchmarkGogoprotobufUnmarshal-8 5172433 230 ns/op 53 96 1.19 27413 2.40
BenchmarkColferMarshal-8 9599860 124 ns/op 51 64 1.19 49055 1.94
BenchmarkColferUnmarshal-8 6220048 197 ns/op 50 112 1.23 31100 1.76
BenchmarkGencodeMarshal-8 6557677 186 ns/op 53 80 1.22 34755 2.33
BenchmarkGencodeUnmarshal-8 5417618 222 ns/op 53 112 1.20 28713 1.98
BenchmarkGencodeUnsafeMarshal-8 11650496 98 ns/op 46 48 1.15 53592 2.05
BenchmarkGencodeUnsafeUnmarshal-8 7637104 161 ns/op 46 96 1.23 35130 1.68
BenchmarkXDR2Marshal-8 7619090 159 ns/op 60 64 1.21 45714 2.48
BenchmarkXDR2Unmarshal-8 9031648 131 ns/op 60 32 1.18 54189 4.09
BenchmarkGoAvroMarshal-8 436340 2828 ns/op 47 1008 1.23 2050 2.81
BenchmarkGoAvroUnmarshal-8 179101 6962 ns/op 47 3328 1.25 841 2.09
BenchmarkGoAvro2TextMarshal-8 399990 2975 ns/op 134 1320 1.19 5359 2.25
BenchmarkGoAvro2TextUnmarshal-8 413822 2826 ns/op 134 799 1.17 5545 3.54
BenchmarkGoAvro2BinaryMarshal-8 1245332 950 ns/op 47 488 1.18 5853 1.95
BenchmarkGoAvro2BinaryUnmarshal-8 1000000 1092 ns/op 47 560 1.09 4700 1.95
BenchmarkIkeaMarshal-8 1772526 670 ns/op 55 72 1.19 9748 9.31
BenchmarkIkeaUnmarshal-8 1468875 871 ns/op 55 160 1.28 8078 5.44
BenchmarkShamatonMapMsgpackMarshal-8 1434548 819 ns/op 92 208 1.17 13197 3.94
BenchmarkShamatonMapMsgpackUnmarshal-8 1675980 738 ns/op 92 144 1.24 15419 5.12
BenchmarkShamatonArrayMsgpackMarshal-8 1523809 758 ns/op 50 176 1.16 7619 4.31
BenchmarkShamatonArrayMsgpackUnmarshal-8 2542365 483 ns/op 50 144 1.23 12711 3.35
BenchmarkSSZNoTimeNoStringNoFloatAMarshal-8 260883 4922 ns/op 55 440 1.28 1434 11.19
BenchmarkSSZNoTimeNoStringNoFloatAUnmarshal-8 157892 7694 ns/op 55 1392 1.21 868 5.53
BenchmarkMumMarshal-8 12371503 97 ns/op 48 0 1.21 59383 0.00
BenchmarkMumUnmarshal-8 5517202 216 ns/op 48 80 1.19 26482 2.70
BenchmarkBebopMarshal-8 9795806 124 ns/op 55 64 1.21 53876 1.94
BenchmarkBebopUnmarshal-8 11537041 104 ns/op 55 32 1.20 63453 3.25

Totals:

benchmark iter time/iter bytes/op allocs/op tt.sec tt.kb ns/alloc
BenchmarkBebop-8 21332847 228 ns/op 110 96 4.86 234661 2.38
BenchmarkGencodeUnsafe-8 19287600 259 ns/op 92 144 5.01 177445 1.80
BenchmarkXDR2-8 16650738 290 ns/op 120 96 4.83 199808 3.02
BenchmarkMum-8 17888705 313 ns/op 96 80 5.61 171731 3.92
BenchmarkColfer-8 15819908 321 ns/op 101 176 5.08 159939 1.82
BenchmarkGogoprotobuf-8 13335758 377 ns/op 106 160 5.03 141359 2.36
BenchmarkGotiny-8 13360306 397 ns/op 96 112 5.30 128258 3.54
BenchmarkGencode-8 11975295 408 ns/op 106 192 4.89 126938 2.12
BenchmarkMsgp-8 10730365 488 ns/op 194 240 5.24 208169 2.03
BenchmarkFlatBuffers-8 8561120 563 ns/op 190 112 4.82 163003 5.03
BenchmarkGoprotobuf-8 6001165 798 ns/op 106 232 4.79 63612 3.44
BenchmarkCapNProto-8 5907236 829 ns/op 192 256 4.90 113418 3.24
BenchmarkHprose2-8 4078735 1213 ns/op 170 144 4.95 69583 8.42
BenchmarkShamatonArrayMsgpack-8 4066174 1241 ns/op 100 320 5.05 40661 3.88
BenchmarkCapNProto2-8 3596254 1364 ns/op 192 564 4.91 69048 2.42
BenchmarkIkea-8 3241401 1541 ns/op 110 232 4.99 35655 6.64
BenchmarkShamatonMapMsgpack-8 3110528 1557 ns/op 184 352 4.84 57233 4.42
BenchmarkProtobuf-8 3071213 1591 ns/op 104 344 4.89 31940 4.62
BenchmarkGob-8 2737262 1734 ns/op 127 160 4.75 34817 10.84
BenchmarkGoAvro2Binary-8 2245332 2042 ns/op 94 1048 4.58 21106 1.95
BenchmarkHprose-8 2273630 2110 ns/op 170 721 4.80 38788 2.93
BenchmarkUgorjiCodecMsgpack-8 1817115 2820 ns/op 182 1808 5.12 33071 1.56
BenchmarkVmihailencoMsgpack-8 1727237 2838 ns/op 200 816 4.90 34544 3.48
BenchmarkBson-8 1749938 2865 ns/op 220 624 5.01 38498 4.59
BenchmarkBinary-8 1722826 2875 ns/op 122 640 4.95 21018 4.49
BenchmarkUgorjiCodecBinc-8 1562874 3055 ns/op 190 1984 4.77 29694 1.54
BenchmarkEasyJson-8 1411510 3513 ns/op 299 1183 4.96 42204 2.97
BenchmarkXDR-8 1195726 4091 ns/op 182 691 4.89 21869 5.92
BenchmarkJsonIter-8 1170281 4266 ns/op 278 512 4.99 32533 8.33
BenchmarkGoAvro2Text-8 813812 5801 ns/op 268 2119 4.72 21810 2.74
BenchmarkSereal-8 784609 6313 ns/op 264 1912 4.95 20713 3.30
BenchmarkJson-8 817528 6786 ns/op 299 599 5.55 24444 11.33
BenchmarkGoAvro-8 615441 9790 ns/op 94 4336 6.03 5785 2.26
BenchmarkSSZNoTimeNoStringNoFloatA-8 418775 12616 ns/op 110 1832 5.28 4606 6.89

Issues

The benchmarks can also be run with validation enabled.

VALIDATE=1 go test -bench='.*' ./

Unfortunately, several of the serializers exhibit issues:

  1. (minor) BSON drops sub-microsecond precision from time.Time.
  2. (minor) Ugorji Binc Codec drops the timezone name (eg. "EST" -> "-0500") from time.Time.
--- FAIL: BenchmarkBsonUnmarshal-8
    serialization_benchmarks_test.go:115: unmarshaled object differed:
        &{20b999e3621bd773 2016-01-19 14:05:02.469416459 -0800 PST f017c8e9de 4 true 0.20887343719329818}
        &{20b999e3621bd773 2016-01-19 14:05:02.469 -0800 PST f017c8e9de 4 true 0.20887343719329818}
--- FAIL: BenchmarkUgorjiCodecBincUnmarshal-8
    serialization_benchmarks_test.go:115: unmarshaled object differed:
        &{20a1757ced6b488e 2016-01-19 14:05:15.69474534 -0800 PST 71f3bf4233 0 false 0.8712180830484527}
        &{20a1757ced6b488e 2016-01-19 14:05:15.69474534 -0800 -0800 71f3bf4233 0 false 0.8712180830484527}

All other fields are correct however.

Additionally, while not a correctness issue, FlatBuffers, ProtoBuffers, Cap'N'Proto and ikeapack do not support time types directly. In the benchmarks an int64 value is used to hold a UnixNano timestamp.

Comments
  • gob fairness

    gob fairness

    Hi. Why not using the same instance of gob Encoder/Decoder, instead of creating a new one for each marshall/unmarshall operation? Seems to me that it would be more fair... what protobuf does once at generate time, gob can do at runtime, but just once! Otherwise consider removing gob from the benchmark, it makes it seem really bad while it probably isn't.

  • FlatBuffers can unmarshal without any allocations, yet there are some in the benchmark

    FlatBuffers can unmarshal without any allocations, yet there are some in the benchmark

    Hi,

    I noticed that the following code seems to be creating heap allocations, which may reflect unfairly on flatbuffers: https://github.com/alecthomas/go_serialization_benchmarks/blob/master/serialization_benchmarks_test.go#L475-L477

    The code in question is:

        a.Name = string(o.Name())
        a.BirthDay = time.Unix(o.BirthDay(), 0)
        a.Phone = string(o.Phone())
    

    Both string calls will create an allocation. FlatBuffers returns a []byte which should be sufficient :-)

  • Fair Comparison For FlatBuffer Lazy Parsing

    Fair Comparison For FlatBuffer Lazy Parsing

    BenchmarkFlatBuffersUnmarshal measures the performance of goserbench.FlatBufferA.Init which does only the initiation. Most of the work is done in the "getters". To be fair, we could read the fields into a goserbench.A instance.

  • Add msgp code generator and report allocations

    Add msgp code generator and report allocations

    This PR fixes #13 and #14 .

    The generated code is in structdef_gen.go. I'll send you another PR if the the code generator ends up writing substantially different code in the future.

  • Skip running benchmarks for X if X fails to build

    Skip running benchmarks for X if X fails to build

    Running command "go test -bench='.*' ./" results in this error:

    #github.com/niubaoshu/gotiny
    ../../golang/pkg/mod/github.com/niubaoshu/[email protected]/unsafe.go:47:3: //go:linkname must refer to declared function or variable
    FAIL	github.com/alecthomas/go_serialization_benchmarks [build failed]
    FAIL
    

    Seems like the issue is specifically with niubaoshu/gotiny package. I'm not interested in this package yet it's a shame because of this I cannot run any other benchmarks and forced to take time to fix this first.

    So hoping if it's possible to update such that if package X fails to build then skips it but build and run everything else?

  • gob benchmark results are unrealistic and unfair

    gob benchmark results are unrealistic and unfair

    Last time I checked gob is the slowest encoding you can have in Go - yet in your benchmark it is the fastest. The reason seems to be that it is the only serializer that reuses encoder, decoder, and buffer. That is completely unrealistic and unfair. I understand that gob is slow without those optimizations but I doubt it is the right way to deal with it.

  • Make goavro v1 compatible and add goavro v2 benchmark tests

    Make goavro v1 compatible and add goavro v2 benchmark tests

    Fixes #64

    Should probably regenerate the report on golang 1.9 with the latest packages. I can do that as well if you feel comfortable or you can run it after merging @alecthomas

  • Adding CBOR serializers

    Adding CBOR serializers

    CBOR is msgpack-like format on IETF standards track (RFC 7049)

    • http://cbor.io
    • https://tools.ietf.org/html/rfc7049

    Golang implementations are:

    • https://code.google.com/p/cbor/
    • https://github.com/2tvenom/cbor

    Both seem to have high level API interfaces that serialise arbitrary structs, so I think they can be added without too much work. I will try to add them in a pull request, unless you beat me to it.

    If anyone has found them to be unstable or broken, please let me know.

    thanks all!

    nickg

  • Use generated code for Vitess bson benchmarks.

    Use generated code for Vitess bson benchmarks.

    The default vitess bson API uses reflection, which is slow. Vitess also provides a code generator (bsongen), which I used to generate a custom encoder/decoder. I started off with this: BenchmarkVitessBsonMarshal 100000 16843 ns/op BenchmarkVitessBsonUnmarshal 500000 5185 ns/op

    Reduced the default excessive buffer allocation from 16K to 1K: BenchmarkVitessBsonMarshal 500000 4772 ns/op BenchmarkVitessBsonUnmarshal 500000 5416 ns/op

    Used generated code: BenchmarkVitessBsonMarshal 1000000 2083 ns/op BenchmarkVitessBsonUnmarshal 1000000 1158 ns/op

    We'll work on reducing the default buffer size from 16K to 1K. It will take us a few iterations to get there.

    PS: Accept this CL only if you think it's fair, because other APIs don't use generated code.

  • Adds benchmarks for gogojsonpb and mongodb's bson lib

    Adds benchmarks for gogojsonpb and mongodb's bson lib

    We're doing a lot of jsonpb encoding and decoding and it is not fast. Wanted to benchmark it along with everything else.

    Also added mongodb's bson lib since a lot of newer work is using this lib instead of mgo.

  • Add bebop to benchmarks

    Add bebop to benchmarks

    I didn't see this in the readme, but I had to feed the output of the benchmarks out like go test -bench='.*' ./ > results.txt for the readme table generation script to produce output.

    Let me know if you would prefer I run the benchmarks on my osx machine for a more similar comparison to the last benchmark.

  • Bump github.com/shamaton/msgpack/v2 from 2.0.0 to 2.1.1

    Bump github.com/shamaton/msgpack/v2 from 2.0.0 to 2.1.1

    Bumps github.com/shamaton/msgpack/v2 from 2.0.0 to 2.1.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Buffer Reuse Inconsistency

    Buffer Reuse Inconsistency

    Some marshalers reuse the buffer. For example, Gotiny applies an encoder which always returns the same buffer. For a better comparison it should allocate the bytes like the others do.

    An other option is to allow each codec to use the fastest option available, including buffer reuse. Or, we could measure both with a clear distinction for the reuse case, like b.Run("reuse", ….

    The issue was noted by @inkeliz with his Karmen format.

  • Command, go get -u -t get error

    Command, go get -u -t get error

    clone the repository and run the command go get -u -t will get the following errors.

    go get: github.com/itsmontoya/[email protected] updating to
            github.com/itsmontoya/[email protected]: parsing go.mod:
            module declares its path as: github.com/mojura/enkodo
                    but was required as: github.com/itsmontoya/mum
    
  • Feature request: add benchmark for google protobuf

    Feature request: add benchmark for google protobuf

    As golang protobuf readme said:

    It has been superseded by the google.golang.org/protobuf module, which contains an updated and simplified API, support for protobuf reflection, and many other improvements. We recommend that new code use the google.golang.org/protobuf module.
    

    Could you provide the comparison with https://github.com/protocolbuffers/protobuf-go?

Go micro-benchmarks for calculating the speed of language constructs

== About == Gospeed is a library of micro-benchmarks for Go which evolved from the GoLightly project. It's main utility is for understanding and reas

Sep 27, 2022
benchmarks for implementation of servers which support 1 million connections

Benchmark for implementation of servers that support 1m connections inspired by handling 1M websockets connections in Go Servers 1_simple_tcp_server:

Jan 5, 2023
binary serialization format

Colfer Colfer is a binary serialization format optimized for speed and size. The project's compiler colf(1) generates source code from schema definiti

Dec 25, 2022
binary serialization format

Colfer Colfer is a binary serialization format optimized for speed and size. The project's compiler colf(1) generates source code from schema definiti

Dec 25, 2022
faster JSON serialization for Go

ffjson: faster JSON for Go ffjson generates static MarshalJSON and UnmarshalJSON functions for structures in Go. The generated functions reduce the re

Dec 25, 2022
A k-mer serialization package for Golang
A k-mer serialization package for Golang

.uniq v5 This package provides k-mer serialization methods for the package kmers, TaxIds of k-mers are optionally saved, while there's no frequency in

Aug 19, 2022
Implementation of Ethernet 2, 802.1Q, 802.1P, 802.11 (Wireless Ethernet) frame serialization/deserialization

Implementation of Ethernet 2, 802.1Q, 802.1P, 802.11 (Wireless Ethernet) frame serialization/deserialization

Feb 5, 2022
cmd tool for automatic storage and comparison of benchmarks results

prettybenchcmp prettybenchcmp is cmd tool for storage and comparison of benchmarks results. There is a standard tool benchcmp, but I don't think that

Apr 6, 2021
Benchmarks of common basic operations for the Go language.

gocostmodel This package was inspired by Brian W. Kernighan and Rob Pike's book "The Practice of Programming" (Addison-Wesley, 1999). In Chapter 7 on

Dec 23, 2022
Go micro-benchmarks for calculating the speed of language constructs

== About == Gospeed is a library of micro-benchmarks for Go which evolved from the GoLightly project. It's main utility is for understanding and reas

Sep 27, 2022
Go Machine Learning Benchmarks
Go Machine Learning Benchmarks

Benchmarks of machine learning inference for Go

Dec 30, 2022
benchmarks for implementation of servers which support 1 million connections

Benchmark for implementation of servers that support 1m connections inspired by handling 1M websockets connections in Go Servers 1_simple_tcp_server:

Jan 5, 2023
Robust framework for running complex workload scenarios in isolation, using Go; for integration, e2e tests, benchmarks and more! 💪

e2e Go Module providing robust framework for running complex workload scenarios in isolation, using Go and Docker. For integration, e2e tests, benchma

Jan 5, 2023
A scanner for running security-related configuration checks such as CIS benchmarks

Localtoast Localtoast is a scanner for running security-related configuration checks such as CIS benchmarks in an easily configurable manner. The scan

Dec 15, 2022
Benchmarks to compare Go Generics

This is a collection of various sorts implemnted both as []int only and as const

Dec 8, 2022
Sqlbench runs benchmarks on an SQL database

sqlbench runs benchmarks on an SQL database. Right now this works for PostgreSQL

Oct 13, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
An operator that helps you perform benchmarks

Camunda-Benchmark-Operator ??️‍♀️ An operator that helps you perform benchmarks. Your first benchmark This requires that you know how to run the opera

Mar 2, 2022
Advanced benchmarks for +15 Go ORMs.

Go ORM Benchmarks Advanced benchmarks for +10 Go ORMs. Originally forked from orm-benchmark. ORMs All package run in no-cache mode. beego/orm bun gorm

Dec 11, 2022
Golang ultimate ANSI-colors that supports Printf/Sprintf methods
Golang ultimate ANSI-colors that supports Printf/Sprintf methods

Aurora Ultimate ANSI colors for Golang. The package supports Printf/Sprintf etc. TOC Installation Usage Simple Printf aurora.Sprintf Enable/Disable co

Dec 29, 2022