1
0
mirror of https://github.com/json-iterator/go.git synced 2025-04-20 11:28:49 +02:00
Rob Figueiredo 91f4a6405d (*Stream).Flush: reset buffer to beginning
Previously it would append to the end of the buffer instead of reusing the
now-free space.

Benchmark demonstrates the improvement, run with -benchtime=10s

    benchmark                                        old ns/op     new ns/op     delta
    Benchmark_encode_string_with_SetEscapeHTML-8     447           442           -1.12%
    Benchmark_jsoniter_large_file-8                  20998         21222         +1.07%
    Benchmark_json_large_file-8                      39593         40187         +1.50%
    Benchmark_stream_encode_big_object-8             10787         8611          -20.17%

    benchmark                                        old allocs     new allocs     delta
    Benchmark_encode_string_with_SetEscapeHTML-8     6              6              +0.00%
    Benchmark_jsoniter_large_file-8                  78             78             +0.00%
    Benchmark_json_large_file-8                      13             13             +0.00%
    Benchmark_stream_encode_big_object-8             31             0              -100.00%

    benchmark                                        old bytes     new bytes     delta
    Benchmark_encode_string_with_SetEscapeHTML-8     760           760           +0.00%
    Benchmark_jsoniter_large_file-8                  4920          4920          +0.00%
    Benchmark_json_large_file-8                      6640          6640          +0.00%
    Benchmark_stream_encode_big_object-8             10056         0             -100.00%

Fixes #438
2020-01-17 21:57:59 -05:00
2018-09-13 21:48:13 +03:00
2019-10-08 11:17:01 -04:00
2019-10-28 23:05:10 -07:00
2017-11-30 10:42:24 +08:00
2017-09-07 17:12:42 +02:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:08:01 +08:00
2018-02-19 23:04:25 +08:00
2018-02-19 23:04:25 +08:00
2018-10-24 21:05:37 +08:00
2017-11-30 10:42:24 +08:00
2019-01-10 17:51:25 +01:00
2019-04-25 17:40:48 -03:00
2019-04-25 17:40:48 -03:00
2018-07-01 13:05:25 +08:00
2018-07-01 13:05:25 +08:00
2019-10-08 11:17:01 -04:00
2019-01-10 18:00:15 +01:00
2018-02-23 08:12:45 +08:00
2018-02-19 23:04:25 +08:00
2019-10-08 11:17:01 -04:00
2018-02-19 23:04:25 +08:00
2017-07-09 16:09:23 +08:00
2016-11-30 08:30:24 +08:00
2018-04-07 21:40:08 +10:00
2019-03-06 22:29:09 +08:00
2019-10-28 23:05:10 -07:00
2019-10-08 11:17:01 -04:00
2019-10-08 11:17:01 -04:00
2018-02-24 22:04:41 +08:00
2018-02-19 23:04:25 +08:00
2018-02-14 14:06:32 +08:00

Sourcegraph GoDoc Build Status codecov rcard License Gitter chat

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

You can also use thrift like JSON using thrift-iterator

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

Always benchmark with your own workload. The result depends heavily on the data input.

Usage

100% compatibility with standard lib

Replace

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

with

import "github.com/json-iterator/go"

var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.Marshal(&data)

Replace

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

with

import "github.com/json-iterator/go"

var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.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%