Comments 36
Что бросается в глаза на blank-go:
- стандартный http сервер;
- стандартная работа с json.
Поэтому такие низкие результаты.
Есть еще такая прелесть без потребности в генераторах кода https://github.com/json-iterator/go
подтвержу, на реальном проекте так и було. Не 50 конечно, но 25-35 выдавали.
Интересно было бы посмотреть на графики потребления cpu\ram во время тестирования, и на результаты с прогреввом java версии. В любом случаи спасибо!
2. Зачем каждый раз открывать/закрывать подключение к бд? Еще и формировать строку подключения тоже каждый раз.
И пара вопросов по коду:
1. В джаве return client; вернет json?
2. В чем заклоючалась нестабильность? Кто и какие ошибки выдавал?
в го у вас:
db.SetMaxOpenConns(20) // Sane defaultзачем это?
db.SetMaxIdleConns(0)
db.SetConnMaxLifetime(time.Nanosecond)
И покажите такое в джаве, а то я не нашел.
я использовал самые новые
Bank-go: Go 1.8
Не верю. Был бы свободный день и Go приложение заработало бы в 5-10 раз быстрее как миниму.
Должно быть стыдно делать такие тесты и уж тем более выкладывать как статьи.
Алсо, для нагрузочного тестирования есть православные ab / siege.
Можно конечно узкие места подправить, скажем нативная JSON либа (jiffy) будет раз в пять быстрее стоковой либы. Если в день через приложение проходят миллионы запросов, разница может оказаться ощутимой.
Of course, I'd also suggest that whoever was the genius who thought it was a good idea toread thingscreate ONE F*CKINGBYTECONNECTIONAT A TIMEPER REQUEST withsystem callsTCP handshakes for eachbyterequest should be retroactively aborted. Who the f*ck does idiotic things like that? How did they noty die as babies, considering that they were likely too stupid to find a tit to suck on?
Linus.
Original
Вот вам бенчмарки
Только Java и Go. Разные фреймворки/библиотеки. Там ещё можно попереключать тип приложения и тачки.
Ну там же написано, что это "из песочницы", тут же видно, что это не инженерная работа, а кто-то сидел в песочнице во дворе, какой-то злой дядя дал ноут с доступом в интернет и получились такие тесты.
Если бы это делал хоть немного инженер, его бы хотя бы волновало почему именно такие результаты? Почему его результаты так отличаются от результатов более разумных существ? Ну и много других вопросов.
А по сути, тут даже комментировать нечего.
волновало почему именно такие результаты?Совершенно правильный камент.
Что очень удивляет, так это дикая разница, особенно на первых шагах (почти в 6 раз!).
Хотя, по сути, здесь нечем тестировать сами языки, т.к. никакой обработки данных в самих ЯП не происходит. Только простейщий прием параметров и отправка сырого запроса в базу. Разница в конкретном тесте должна быть минимальна.
Автор же нагородил целый огород из горилл и джейсонов, что в данном тесте просто съест львиную долю ресурсов, а все должно просто упереться в систему ввода-вывода и в базу.
Сами ЯП тут толком и не тестируются.
Bank-java: Java 11, spring boot 2.0.4, spring-web 5.0.8, PostgreSQL JDBC 4.2.4
О боже! В этом мире еще остались люди, которые не пишут на Spring Boot и не ассоциируют его со словом Java?
Java vs GO. Тестирование большим числом пользователей