investigatejson

package
v0.0.0-...-5e56d49 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 24, 2021 License: MIT Imports: 3 Imported by: 0

README

Иследование пакетов JSON

Из постановки:

JSON: сравнить пакеты
Ivan Korjavin
•
Вчера
100 баллов
Срок сдачи: Завтра, 11:00
- encoding/json
- jsoniter
- jsonparser

Что установил

  1. go get github.com/json-iterator/go
  2. go get github.com/buger/jsonparser

Я так понял что сравнить их можно по производительности и врядли можно по функциональности так как jsonparser - вообще про другое чем остальные 2

По памяти их можно сравнить отчасти но только encoding/json и jsoniter

Чтобы их более менее адекватно сравнить - я хотел вычитать относительно большой файл (коллекция из 10000 структур небольшого размера) гарантировано до конца всеми средствами.

encoding/json и jsoniter при этом собирали срез структур заданного типа, а jsonparser собирал значение одного из полей в самом последнем элементе массива.

Результаты испытаний:

Инструмент ns/op B/op allocs/op
encoding/json 21968518 1489833 20039
jsoniter 7557344 2492181 70025
jsonparser 2060852 0 0

Как видно из этого анализа:

  1. jsoniter работает в 3 раза быстрее чем штатный енкодер, но при этом и удельное потребление памяти у него в 3 раза интенсивнее
  2. jsonparser реально очень быстрый на сканирование json и не потребляет памяти в heap совсем

Выводы.

  1. В общем и целом нет оснований не использовать jsoniter для загрузки JSON в структуры если нет идиосинкразии к внешним не стандартным зависимостям

  2. В случае если действительно требуется не полный парс большого документа а работа с отдельными значениями в JSON однозначно надо использовать jsonparser - инструмент под это более чем заточен

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PrintIHaveDependencies

func PrintIHaveDependencies()

Types

type StructToRead

type StructToRead struct {
	Number int
	Text   string
	IsEven bool
}

type SubstructToRead

type SubstructToRead struct {
	Name  string
	Value string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL