Обновить
4K+
7
Игорь Иванюто@ihar76

Пользователь

7
Рейтинг
1
Подписчики
Отправить сообщение

насколько я помню, это экспериментальная версия, по крайней мере в 1.26.3 
поэтому в репозитории она не присутствует. Но специально для ответа я провел тесты и получил

=== SilentJSON vs encoding/json v1 vs encoding/json/v2 (Go 1.26.3) ===

Platform: AMD Ryzen 9 7950×3D, Windows, GOEXPERIMENT=jsonv2

— Unmarshal 3M records (482 MB JSON, sequential) —

SilentJSON-32 1 753595900 ns/op 671.42 MB/s 65368888 B/op 6 allocs/op

StdJSON_v2-32 1 2698572700 ns/op 187.50 MB/s 1985055064 B/op 18910718 allocs/op

StdJSON_v1-32 1 3108066300 ns/op 162.80 MB/s 1985062216 B/op 18910832 allocs/op

— Unmarshal 100K records (parallel) —

SilentJSON_Parallel-32 3 4823467 ns/op 3293.48 MB/s 6021384 B/op 163 allocs/op

StdJSON_v1-32 3 80785100 ns/op 196.65 MB/s 2163085 B/op 220401 allocs/op

StdJSON_v2-32 3 82894933 ns/op 191.64 MB/s 19606984 B/op 820401 allocs/op

— Marshal 100K records —

SilentJSON-32 3 11557700 ns/op 1409.30 MB/s 0 B/op 0 allocs/op

StdJSON_v2-32 3 40116033 ns/op 396.00 MB/s 15892528 B/op 3 allocs/op

StdJSON_v1-32 3 41471367 ns/op 383.06 MB/s 15892528 B/op 3 allocs/op

— Stream Decode 3M records (482 MB JSON) —

SilentJSON_Stream-32 1 836256500 ns/op 605.05 MB/s 41405248 B/op 7714289 allocs/op

StdJSON_v2_Stream-32 1 2917844500 ns/op 173.41 MB/s 1985114304 B/op 18910791 allocs/op

StdJSON_v1_Stream-32 1 3703443800 ns/op 136.62 MB/s 106551440 B/op 5118604 allocs/op

Вы абсолютно правы, тут всегда вопрос выбора инструмента под задачу.

Я пришел к этому решению через боль: когда нужно было каждый час парсить сотню прайсов от поставщиков (до 6 млн позиций на файл) для крупного портала, вопрос скорости парсинга стал критическим. Было обидно осознавать, что «бутылочное горлышко» — это не сложная бизнес-логика или нехватка мощностей, а именно сам парсер, который просто не успевал переваривать валидные данные. Причем ситуация усугублялась тем, что форматы у поставщиков были абсолютно разные и постоянно менялись.

Если бы такой инструмент был под рукой тогда, я бы сэкономил массу времени и нервов. В общем, как вы и сказали — «ружье» выстрелило именно там, где это было нужно для выживания проекта

2

Информация

В рейтинге
1 031-й
Откуда
Warszawa, Польша
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
SQL
PostgreSQL
Linux
Kubernetes
Golang
Java
C++
PHP
Docker