Browse Source

codec: bench: added github.com/mongodb/mongo-go-driver/bson to benchmarks

Ugorji Nwoke 6 years ago
parent
commit
0ecb224b1b

+ 1 - 0
codec/bench/bench.sh

@@ -12,6 +12,7 @@ _go_get() {
        gopkg.in/mgo.v2/bson \
        gopkg.in/vmihailenco/msgpack.v2 \
        github.com/json-iterator/go \
+       github.com/mongodb/mongo-go-driver/bson \
        github.com/mailru/easyjson/...
 }
 

+ 22 - 3
codec/bench/x_bench_test.go

@@ -11,9 +11,10 @@ import (
 
 	gcbor "bitbucket.org/bodhisnarkva/cbor/go" // gcbor "code.google.com/p/cbor/go"
 	"github.com/Sereal/Sereal/Go/sereal"
-	"github.com/davecgh/go-xdr/xdr2"
-	"github.com/json-iterator/go"
-	"gopkg.in/mgo.v2/bson"                     //"labix.org/v2/mgo/bson"
+	xdr "github.com/davecgh/go-xdr/xdr2"
+	jsoniter "github.com/json-iterator/go"
+	"github.com/mongodb/mongo-go-driver/bson"
+	mgobson "gopkg.in/mgo.v2/bson"             //"labix.org/v2/mgo/bson"
 	vmsgpack "gopkg.in/vmihailenco/msgpack.v2" //"github.com/vmihailenco/msgpack"
 )
 
@@ -36,6 +37,7 @@ import (
 
 func init() {
 	testPreInitFns = append(testPreInitFns, benchXPreInit)
+	_ = bson.NewDecoder
 }
 
 func benchXPreInit() {
@@ -43,6 +45,7 @@ func benchXPreInit() {
 		benchChecker{"json-iter", fnJsonIterEncodeFn, fnJsonIterDecodeFn},
 		benchChecker{"v-msgpack", fnVMsgpackEncodeFn, fnVMsgpackDecodeFn},
 		benchChecker{"bson", fnBsonEncodeFn, fnBsonDecodeFn},
+		benchChecker{"mgobson", fnMgobsonEncodeFn, fnMgobsonDecodeFn},
 		// place codecs with issues at the end, so as not to make results too ugly
 		benchChecker{"gcbor", fnGcborEncodeFn, fnGcborDecodeFn}, // this logs fat ugly message, but we log.SetOutput(ioutil.Discard)
 		benchChecker{"xdr", fnXdrEncodeFn, fnXdrDecodeFn},
@@ -74,6 +77,14 @@ func fnBsonDecodeFn(buf []byte, ts interface{}) error {
 	return bson.Unmarshal(buf, ts)
 }
 
+func fnMgobsonEncodeFn(ts interface{}, bsIn []byte) ([]byte, error) {
+	return mgobson.Marshal(ts)
+}
+
+func fnMgobsonDecodeFn(buf []byte, ts interface{}) error {
+	return mgobson.Unmarshal(buf, ts)
+}
+
 func fnJsonIterEncodeFn(ts interface{}, bsIn []byte) ([]byte, error) {
 	if testUseIoEncDec >= 0 {
 		buf := bytes.NewBuffer(bsIn[:0]) // new(bytes.Buffer)
@@ -129,6 +140,14 @@ func Benchmark__JsonIter___Decode(b *testing.B) {
 
 // Place codecs with issues at the bottom, so as not to make results look too ugly.
 
+func Benchmark__Mgobson____Encode(b *testing.B) {
+	fnBenchmarkEncode(b, "mgobson", benchTs, fnMgobsonEncodeFn)
+}
+
+func Benchmark__Mgobson____Decode(b *testing.B) {
+	fnBenchmarkDecode(b, "mgobson", benchTs, fnMgobsonEncodeFn, fnMgobsonDecodeFn, fnBenchNewTs)
+}
+
 func Benchmark__Bson_______Encode(b *testing.B) {
 	fnBenchmarkEncode(b, "bson", benchTs, fnBsonEncodeFn)
 }

+ 2 - 0
codec/bench/z_all_x_bench_gen_test.go

@@ -23,6 +23,7 @@ func benchmarkCodecXGenGroup(t *testing.B) {
 	t.Run("Benchmark__Gob________Encode", Benchmark__Gob________Encode)
 	t.Run("Benchmark__JsonIter___Encode", Benchmark__JsonIter___Encode)
 	t.Run("Benchmark__Bson_______Encode", Benchmark__Bson_______Encode)
+	t.Run("Benchmark__Mgobson____Encode", Benchmark__Mgobson____Encode)
 	t.Run("Benchmark__VMsgpack___Encode", Benchmark__VMsgpack___Encode)
 	t.Run("Benchmark__Msgp_______Encode", Benchmark__Msgp_______Encode)
 	t.Run("Benchmark__Easyjson___Encode", Benchmark__Easyjson___Encode)
@@ -41,6 +42,7 @@ func benchmarkCodecXGenGroup(t *testing.B) {
 	t.Run("Benchmark__Gob________Decode", Benchmark__Gob________Decode)
 	t.Run("Benchmark__JsonIter___Decode", Benchmark__JsonIter___Decode)
 	t.Run("Benchmark__Bson_______Decode", Benchmark__Bson_______Decode)
+	t.Run("Benchmark__Mgobson____Decode", Benchmark__Mgobson____Decode)
 	// t.Run("Benchmark__VMsgpack___Decode", Benchmark__VMsgpack___Decode)
 	t.Run("Benchmark__Msgp_______Decode", Benchmark__Msgp_______Decode)
 	t.Run("Benchmark__Easyjson___Decode", Benchmark__Easyjson___Decode)

+ 4 - 0
codec/bench/z_all_x_bench_test.go

@@ -22,6 +22,7 @@ func benchmarkXGroup(t *testing.B) {
 	benchmarkDivider()
 	t.Run("Benchmark__JsonIter___Encode", Benchmark__JsonIter___Encode)
 	t.Run("Benchmark__Bson_______Encode", Benchmark__Bson_______Encode)
+	t.Run("Benchmark__Mgobson____Encode", Benchmark__Mgobson____Encode)
 	t.Run("Benchmark__VMsgpack___Encode", Benchmark__VMsgpack___Encode)
 	// t.Run("Benchmark__Gcbor______Encode", Benchmark__Gcbor______Encode)
 	// t.Run("Benchmark__Xdr________Encode", Benchmark__Xdr________Encode)
@@ -30,6 +31,7 @@ func benchmarkXGroup(t *testing.B) {
 	benchmarkDivider()
 	t.Run("Benchmark__JsonIter___Decode", Benchmark__JsonIter___Decode)
 	t.Run("Benchmark__Bson_______Decode", Benchmark__Bson_______Decode)
+	t.Run("Benchmark__Mgobson____Decode", Benchmark__Mgobson____Decode)
 	// t.Run("Benchmark__VMsgpack___Decode", Benchmark__VMsgpack___Decode)
 	// t.Run("Benchmark__Gcbor______Decode", Benchmark__Gcbor______Decode)
 	// t.Run("Benchmark__Xdr________Decode", Benchmark__Xdr________Decode)
@@ -48,6 +50,7 @@ func benchmarkCodecXGroup(t *testing.B) {
 	// t.Run("Benchmark__Std_Xml____Encode", Benchmark__Std_Xml____Encode)
 	t.Run("Benchmark__JsonIter___Encode", Benchmark__JsonIter___Encode)
 	t.Run("Benchmark__Bson_______Encode", Benchmark__Bson_______Encode)
+	t.Run("Benchmark__Mgobson____Encode", Benchmark__Mgobson____Encode)
 	t.Run("Benchmark__VMsgpack___Encode", Benchmark__VMsgpack___Encode)
 	// t.Run("Benchmark__Gcbor______Encode", Benchmark__Gcbor______Encode)
 	// t.Run("Benchmark__Xdr________Encode", Benchmark__Xdr________Encode)
@@ -64,6 +67,7 @@ func benchmarkCodecXGroup(t *testing.B) {
 	// t.Run("Benchmark__Std_Xml____Decode", Benchmark__Std_Xml____Decode)
 	t.Run("Benchmark__JsonIter___Decode", Benchmark__JsonIter___Decode)
 	t.Run("Benchmark__Bson_______Decode", Benchmark__Bson_______Decode)
+	t.Run("Benchmark__Mgobson____Decode", Benchmark__Mgobson____Decode)
 	// t.Run("Benchmark__VMsgpack___Decode", Benchmark__VMsgpack___Decode)
 	// t.Run("Benchmark__Gcbor______Decode", Benchmark__Gcbor______Decode)
 	// t.Run("Benchmark__Xdr________Decode", Benchmark__Xdr________Decode)