EasyJSON не самая быстрая библиотека JSON на Go?! СРАВНЕНИЕ

  Рет қаралды 2,529

Slavniy IT

Slavniy IT

Күн бұрын

Пікірлер: 28
@SpeCTreBY
@SpeCTreBY Жыл бұрын
goccy/go-json быстрее, но такие тесты врятли объективны просто какие-то библиотеки могут переиспользовать выделенную память, а некоторые нет с ограничим в одно ядро BenchmarkCodecMarshal/simple 190386 6755 ns/op 256 B/op 1 allocs/op BenchmarkCodecMarshal/medium 15675 75289 ns/op 269 B/op 1 allocs/op BenchmarkCodecMarshal/heavy 925 1330413 ns/op 4717 B/op 1 allocs/op BenchmarkCodecUnmarshal/simple 94777 12442 ns/op 3032 B/op 57 allocs/op BenchmarkCodecUnmarshal/medium 8025 156683 ns/op 34984 B/op 1052 allocs/op BenchmarkCodecUnmarshal/heavy 442 2737791 ns/op 613768 B/op 18990 allocs/op BenchmarkEasyJsonMarshal/simple 164883 7656 ns/op 4856 B/op 8 allocs/op BenchmarkEasyJsonMarshal/medium 12703 96448 ns/op 50023 B/op 12 allocs/op BenchmarkEasyJsonMarshal/heavy 602 1706876 ns/op 764835 B/op 39 allocs/op BenchmarkEasyJsonUnmarshal/simple 90505 13564 ns/op 2048 B/op 55 allocs/op BenchmarkEasyJsonUnmarshal/medium 6016 202300 ns/op 100816 B/op 1369 allocs/op BenchmarkEasyJsonUnmarshal/heavy 328 3674916 ns/op 2019505 B/op 24403 allocs/op BenchmarkJsonIterMarshal/simple 115100 10955 ns/op 4096 B/op 1 allocs/op BenchmarkJsonIterMarshal/medium 10000 103246 ns/op 49153 B/op 1 allocs/op BenchmarkJsonIterMarshal/heavy 661 1783001 ns/op 761889 B/op 1 allocs/op BenchmarkJsonIterUnmarshal/simple 103350 11014 ns/op 1920 B/op 54 allocs/op BenchmarkJsonIterUnmarshal/medium 8602 140552 ns/op 33873 B/op 1049 allocs/op BenchmarkJsonIterUnmarshal/heavy 508 2412836 ns/op 612672 B/op 18987 allocs/op BenchmarkGoJsonMarshal/simple 234180 4941 ns/op 4096 B/op 1 allocs/op BenchmarkGoJsonMarshal/medium 15566 75858 ns/op 49153 B/op 1 allocs/op BenchmarkGoJsonMarshal/heavy 928 1338881 ns/op 761889 B/op 1 allocs/op BenchmarkGoJsonUnmarshal/simple 136219 8863 ns/op 4096 B/op 1 allocs/op BenchmarkGoJsonUnmarshal/medium 10000 116278 ns/op 49162 B/op 1 allocs/op BenchmarkGoJsonUnmarshal/heavy 636 1936328 ns/op 762062 B/op 3 allocs/op без ограничений BenchmarkCodecMarshal/simple-12 216837 6346 ns/op 256 B/op 1 allocs/op BenchmarkCodecMarshal/medium-12 16802 72255 ns/op 268 B/op 1 allocs/op BenchmarkCodecMarshal/heavy-12 901 1355553 ns/op 4836 B/op 1 allocs/op BenchmarkCodecUnmarshal/simple-12 96255 11963 ns/op 3032 B/op 57 allocs/op BenchmarkCodecUnmarshal/medium-12 8019 150043 ns/op 34984 B/op 1052 allocs/op BenchmarkCodecUnmarshal/heavy-12 475 2510777 ns/op 613772 B/op 18990 allocs/op BenchmarkEasyJsonMarshal/simple-12 173889 6824 ns/op 4870 B/op 8 allocs/op BenchmarkEasyJsonMarshal/medium-12 13666 86165 ns/op 51453 B/op 12 allocs/op BenchmarkEasyJsonMarshal/heavy-12 836 1454789 ns/op 772867 B/op 42 allocs/op BenchmarkEasyJsonUnmarshal/simple-12 96460 12246 ns/op 2048 B/op 55 allocs/op BenchmarkEasyJsonUnmarshal/medium-12 6627 195514 ns/op 100816 B/op 1369 allocs/op BenchmarkEasyJsonUnmarshal/heavy-12 352 3223676 ns/op 2019516 B/op 24403 allocs/op BenchmarkJsonIterMarshal/simple-12 109820 10643 ns/op 4099 B/op 1 allocs/op BenchmarkJsonIterMarshal/medium-12 10000 104646 ns/op 49199 B/op 1 allocs/op BenchmarkJsonIterMarshal/heavy-12 676 1706036 ns/op 768297 B/op 1 allocs/op BenchmarkJsonIterUnmarshal/simple-12 116784 10208 ns/op 1921 B/op 54 allocs/op BenchmarkJsonIterUnmarshal/medium-12 9134 132007 ns/op 33891 B/op 1049 allocs/op BenchmarkJsonIterUnmarshal/heavy-12 538 2302688 ns/op 612909 B/op 18987 allocs/op BenchmarkGoJsonMarshal/simple-12 241269 4832 ns/op 4099 B/op 1 allocs/op BenchmarkGoJsonMarshal/medium-12 15518 75882 ns/op 49217 B/op 1 allocs/op BenchmarkGoJsonMarshal/heavy-12 914 1266134 ns/op 766713 B/op 1 allocs/op BenchmarkGoJsonUnmarshal/simple-12 136999 8573 ns/op 4102 B/op 1 allocs/op BenchmarkGoJsonUnmarshal/medium-12 10000 106237 ns/op 49431 B/op 2 allocs/op BenchmarkGoJsonUnmarshal/heavy-12 704 1644087 ns/op 767214 B/op 20 allocs/op
@VyacheArt
@VyacheArt Жыл бұрын
Вот это я понимаю уровень! Огромное спасибо за ещё одну альтернативу и бенчмарки! Ваш коммент явно для закрепа))
@SpeCTreBY
@SpeCTreBY Жыл бұрын
​@@VyacheArt уточнение. Marshal тест нормальный, а вот Unmarshal нужно создавать переменную по месту использования, чтобы нельзя было переиспользовать память выделенную ранее (update) вот на мой взгляд более объективные данные для Unmarshal, когда объект для записи перед операцией пустой (тесты на другом железе поэтому с предыдущими данными не нужно сравнивать) одно ядро BenchmarkGoJsonUnmarshal/simple 107883 9777 ns/op 7384 B/op 30 allocs/op BenchmarkGoJsonUnmarshal/medium 5964 177775 ns/op 110884 B/op 3182 allocs/op BenchmarkGoJsonUnmarshal/heavy 423 2842369 ns/op 1835873 B/op 54182 allocs/op BenchmarkEasyJsonUnmarshal/simple 102358 12241 ns/op 5456 B/op 60 allocs/op BenchmarkEasyJsonUnmarshal/medium 10000 173566 ns/op 116944 B/op 1375 allocs/op BenchmarkEasyJsonUnmarshal/heavy 399 3022920 ns/op 2029842 B/op 24408 allocs/op BenchmarkJsonIterUnmarshal/simple 111409 10750 ns/op 5480 B/op 61 allocs/op BenchmarkJsonIterUnmarshal/medium 6332 180006 ns/op 121429 B/op 1793 allocs/op BenchmarkJsonIterUnmarshal/heavy 384 3103849 ns/op 2099854 B/op 30891 allocs/op BenchmarkStdJsonUnmarshal/simple 25922 46361 ns/op 7240 B/op 122 allocs/op BenchmarkStdJsonUnmarshal/medium 1977 659088 ns/op 164304 B/op 3484 allocs/op BenchmarkStdJsonUnmarshal/heavy 100 11481543 ns/op 2798757 B/op 58874 allocs/op без ограничений BenchmarkGoJsonUnmarshal/simple 132930 8677 ns/op 7394 B/op 30 allocs/op BenchmarkGoJsonUnmarshal/medium 7255 159709 ns/op 111402 B/op 3184 allocs/op BenchmarkGoJsonUnmarshal/heavy 471 2510393 ns/op 1846470 B/op 54214 allocs/op BenchmarkEasyJsonUnmarshal/simple 104529 11358 ns/op 5456 B/op 60 allocs/op BenchmarkEasyJsonUnmarshal/medium 7465 156001 ns/op 116944 B/op 1375 allocs/op BenchmarkEasyJsonUnmarshal/heavy 453 2652494 ns/op 2029854 B/op 24408 allocs/op BenchmarkJsonIterUnmarshal/simple 113462 10814 ns/op 5482 B/op 61 allocs/op BenchmarkJsonIterUnmarshal/medium 6684 172565 ns/op 121479 B/op 1793 allocs/op BenchmarkJsonIterUnmarshal/heavy 397 2925993 ns/op 2100529 B/op 30891 allocs/op BenchmarkStdJsonUnmarshal/simple 28377 41874 ns/op 7240 B/op 122 allocs/op BenchmarkStdJsonUnmarshal/medium 1909 635548 ns/op 164305 B/op 3484 allocs/op BenchmarkStdJsonUnmarshal/heavy 100 10412153 ns/op 2798774 B/op 58874 allocs/op
@f0rzend59
@f0rzend59 2 жыл бұрын
Очень классный и качественный контент. Спасибо, такой контент на вес золота
@VyacheArt
@VyacheArt 2 жыл бұрын
Спасибо большое Вам, и рад что понравилось:) Такие зрители на вес золота!
@sovrinfo
@sovrinfo Жыл бұрын
Спасибо за видео. Коммент в поддержку!
@VyacheArt
@VyacheArt Жыл бұрын
Спасибо большое!!!
@КристинаНарымовская-ю2т
@КристинаНарымовская-ю2т 2 жыл бұрын
Столько всего нового всегда узнаю😎спасибо 😏
@VyacheArt
@VyacheArt 2 жыл бұрын
Спасибо:))
@ValeriyYakovlev-g9d
@ValeriyYakovlev-g9d Жыл бұрын
Спасибо!
@ananaslegend
@ananaslegend Жыл бұрын
почему не было fastjson?
@yarbersheer8559
@yarbersheer8559 2 жыл бұрын
пасямба
@VyacheArt
@VyacheArt 2 жыл бұрын
:)) пасиба за коммент!!
@yarbersheer8559
@yarbersheer8559 2 жыл бұрын
@@VyacheArt а кроме кабанчика, что по хайлоуду почитать посоветуете?
@VyacheArt
@VyacheArt 2 жыл бұрын
@@yarbersheer8559 боюсь, я даже не смогу тут посоветовать что-то почитать, поскольку сам двигался по собственному опыту и опыту коллег. Хайлоад в каждой области очень специфичный и проблемы решаются по-разному. А база строится на общих знаниях того как работает конкретный язык, стек, выделение памяти, сборщик мусора, и на умении профайлить в нужной степени. А в остальном больше специфичное что-то для конкретного приложения.
@yarbersheer8559
@yarbersheer8559 2 жыл бұрын
@@VyacheArt ага... для обретения навыка нужен опыт в работе, а для работы нужен опыт в навыке ) Коротко о рынке найма в IT )
@VyacheArt
@VyacheArt 2 жыл бұрын
@Yarber Sheer я думаю тут верная стратегия это просто работать, получать общий опыт, и там в любом случае появится понимание как оно работает, и "понимание хайлоада". Хайлоад это же просто часть оптимизационных работ, чтобы уметь обрабатывать большой поток запросов/информации, не отдельная область какая-то 🙂
@AlexeiCheban
@AlexeiCheban 2 жыл бұрын
2019 это ещё не старая библиотека, что вы там ожидаете что бы постоянно обновлялось в json?
@VyacheArt
@VyacheArt 2 жыл бұрын
С одной стороны Вы правы, с другой стороны я ожидаю, что какие-нибудь конечные проблемные кейсы всегда существуют, которые можно пофиксить. Либо то же обновление используемых библиотек: например, до сентября 2019 регулярно появлялись коммиты с обновлением используемой версии fuzzit. Новые версии fuzzit есть после сентября, но коммитов с обновлением уже нет. Это не говорит о том что ffjson плохая библиотека, это лишь говорит о том, что библиотека скорее всего заброшена, и какие-нибудь потенциальные проблемы не будут уже исправлены. И если Вы используете эту библиотеку, то вам останется лишь форкнуть ее и разбираться в проблемах самостоятельно. Я бы здесь предпочел библиотеку, у которой ещё есть активные контрибьюторы
@Mytest437
@Mytest437 Жыл бұрын
@@VyacheArt Мы все любим пользоваться на халяву чужим трудом)
@ArtemCYOU
@ArtemCYOU 2 жыл бұрын
крч постоянно надо все тестировать
@VyacheArt
@VyacheArt 2 жыл бұрын
Да, лучше один раз затестить, чем семь раз прогонять код в голове:)
@raylabpro
@raylabpro 2 жыл бұрын
Странно, что в сравнении есть json-iterator но нет goccy/go-json который пошустрее многих
@VyacheArt
@VyacheArt 2 жыл бұрын
Значит будет когда-нибудь:)) На самом деле просто не нашел такой на момент записи ролика
@raylabpro
@raylabpro 2 жыл бұрын
@@VyacheArt будем ждать) было бы здорово сравнение покрупнее. Сейчас их довольно много развелось разных. Но эта по моим замерам по соотношению удобство/скорость была приемлема.
Sigma baby, you've conquered soap! 😲😮‍💨 LeoNata family #shorts
00:37
HELP!!!
00:46
Natan por Aí
Рет қаралды 44 МЛН
Real Man relocate to Remote Controlled Car 👨🏻➡️🚙🕹️ #builderc
00:24
Trick-or-Treating in a Rush. Part 2
00:37
Daniel LaBelle
Рет қаралды 26 МЛН
10 КРУТЫХ идей Go проектов для новичков
5:55
Славный АйТи
Рет қаралды 4 М.
Pytest: от моков к docker compose
16:14
DeepSchool
Рет қаралды 326
Я - Никиборг. Язык Go. Go vs Rust. IO games.
18:04
web3.online
Рет қаралды 10 М.
Golang Live | The Art of Performance: Profiling & Benchmarking in Go
52:23
Архитектура Go проекта на практике
30:09
Evrone Development
Рет қаралды 17 М.
2 фишки с JSON в Go, про которые не знал я
5:12
АйТи Красавчик
Рет қаралды 6 М.
Sigma baby, you've conquered soap! 😲😮‍💨 LeoNata family #shorts
00:37