1
0
mirror of https://github.com/json-iterator/go.git synced 2025-04-23 11:37:32 +02:00
Oleg Shaldybin 34fbec74ad Shorter sleep while waiting for encoder/decoder
If the client is using the same jsoniter config with multiple goroutines
it's very likely that few initial operations will encounter a placeholder
encoder/decoder while the real one is being created by another
goroutine. Having a full second sleep seems too conservative, since
encoder/decoder will be created in a very short time. This is very easy
to reproduce in any real environment with a few concurrent requests of
the same type. A few initial requests will have 1s+ response time.

Changing to 10ms should smooth out marshal/unmarshal times for these
initial concurrent requests.
2017-09-14 12:37:47 -07:00
2017-09-06 13:18:05 +08:00
2017-08-10 20:58:49 -07:00
2017-07-02 12:58:14 +08:00
2017-09-07 17:12:42 +02:00
2017-07-09 11:24:26 +08:00
2017-07-10 15:23:35 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 16:09:23 +08:00
2017-09-05 13:00:03 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 16:09:23 +08:00
2017-08-25 12:53:23 +08:00
2017-08-02 09:20:43 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 11:12:37 +08:00
2017-09-05 13:00:03 +08:00
2017-06-20 15:11:01 +08:00
2017-08-25 12:53:23 +08:00
2017-07-09 16:09:23 +08:00
2016-11-30 08:30:24 +08:00
2017-07-31 21:49:02 +08:00
2017-07-15 18:09:06 +08:00

Sourcegraph GoDoc Build Status codecov rcard License Gitter chat

A high-performance 100% compatible drop-in replacement of "encoding/json"

Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com

Benchmark

benchmark

Source code: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go

Raw Result (easyjson requires static code generation)

ns/op allocation bytes allocation times
std decode 35510 ns/op 1960 B/op 99 allocs/op
easyjson decode 8499 ns/op 160 B/op 4 allocs/op
jsoniter decode 5623 ns/op 160 B/op 3 allocs/op
std encode 2213 ns/op 712 B/op 5 allocs/op
easyjson encode 883 ns/op 576 B/op 3 allocs/op
jsoniter encode 837 ns/op 384 B/op 4 allocs/op

Usage

100% compatibility with standard lib

Replace

import "encoding/json"
json.Marshal(&data)

with

import "github.com/json-iterator/go"
jsoniter.Marshal(&data)

Replace

import "encoding/json"
json.Unmarshal(input, &data)

with

import "github.com/json-iterator/go"
jsoniter.Unmarshal(input, &data)

More documentation

How to get

go get github.com/json-iterator/go

Contribution Welcomed !

Contributors

Report issue or pull request, or email taowen@gmail.com, or Gitter chat

Description
Languages
Go 99.9%
Shell 0.1%