1
0
mirror of https://github.com/json-iterator/go.git synced 2025-01-08 13:06:29 +02:00
A high-performance 100% compatible drop-in replacement of "encoding/json" http://jsoniter.com/migrate-from-go-std.html
Go to file
2016-12-01 13:53:36 +08:00
jsoniter_int_test.go merge lexer with iterator 2016-12-01 10:35:38 +08:00
jsoniter_io_test.go merge lexer with iterator 2016-12-01 10:35:38 +08:00
jsoniter_string_test.go merge lexer with iterator 2016-12-01 10:35:38 +08:00
jsoniter.go support array 2016-12-01 13:53:36 +08:00
LICENSE Initial commit 2016-11-30 08:30:24 +08:00
README.md add lexer 2016-12-01 00:56:25 +08:00

go

faster than DOM, more usable than SAX/StAX

string

func Benchmark_jsoniter_string(b *testing.B) {
	for n := 0; n < b.N; n++ {
		lexer := NewLexerWithArray([]byte(`"\ud83d\udc4a"`))
		lexer.LexString()
	}
}

10000000 140 ns/op

func Benchmark_json_string(b *testing.B) {
	for n := 0; n < b.N; n++ {
		result := ""
		json.Unmarshal([]byte(`"\ud83d\udc4a"`), &result)
	}
}

2000000 710 ns/op (5x slower)

int

func Benchmark_jsoniter_int(b *testing.B) {
	for n := 0; n < b.N; n++ {
		lexer := NewLexerWithArray([]byte(`-100`))
		lexer.LexInt64()
	}
}

30000000 60.1 ns/op

func Benchmark_json_int(b *testing.B) {
	for n := 0; n < b.N; n++ {
		result := int64(0)
		json.Unmarshal([]byte(`-100`), &result)
	}
}

3000000 505 ns/op (8x slower)