Pull to refresh
40
Сергей Камардин@gobwas

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

32
Subscribers
Send message
Спасибо, отличная статья!
Спасибо! Натыкался на этот бенчмарк во время наших тестов. Безусловно, можно ускорить nginx, но в контексте статьи производительность nginx не столь критична, так как все серверы находились в равных условиях.
Я пробовал gccgo, у меня он с флагом fast оказался медленнее (на той же виртуалке, что и тесты) ~ на 20-25% =(
Класс! И еще забавно, что мы тоже использовали rust iron, который по итогу просто исключили за ненадобностью =)
divan0 тоже предложил fasthttp (и ребята из golang-russian slack) и наивный split – в понедельник обновлю пост, думаю, что fasthttp подтвердит ваш результат.
Тест-драйвер и ядро исключаем, ибо они равны. В итоге измеряем http-библиотеки в выбранных языках. Ой, разве не этого мы и хотели? =)
Зато эти тесты показывают, как ведут себя голые серверы, без «прочих нюансов» которые зависят от рук программистов. И оверхед каждого из претендентов никуда не денется, если «в него добавится логика и начнется сборка мусора».
И go и rust можно дебажить с gdb. По поводу mio – да, его и пытаются прикрутить создатели hyper (есть ссылка на issue в статье). Меня еще расстраивает тот факт, что в Rust выпилили аналогичные «горутины» или «green threads» после, вроде 0.9 версии со смыслом, типа, если вам нужно – сами напилите планировщик для этих дел.

Про тесты с локального хоста – где-то выше я уже говорил, что расклады от прогона к прогону остаются прежними, соответственно, все в равных условиях.

Про «измерение скорости тормозный либы» – какую не тормозную http либу для Rust знаете вы? Или вы предлагает писать для такого бенчмарка свой http сервер? )
А что бы выбрали вы?
А со второй попытки – работает? )
Понял, большое спасибо!
Круто ) Спасибо!
В ab его не тестировали. Код показать, к сожалению, нельзя.

Почему wrk подходит больше для latency?
Внизу чуть-чуть в комментах приоткрыли завесу по wrk ))
А что по rps и completed requests?
wrk, 1-й тест:
Average Latency, ms: 38.56
Requests/sec: 9874.16


Если сравнивать наши реализации серверов на go и c++, то у нас они следующие (c++ не представлен в статье):

Go:
Average Latency, ms: 104,83
Requests/sec: 36191.37

C++
Average Latency, ms: 57.88
Requests/sec: 16792.48

Скорость ответа не всегда равно высокая производительность.

Никто не спорит, что C++ может быстрее. Erlang, например, тоже может очень быстро.
И данный обзор никак не пытается определить лучший в мире язык программирования. =)
Теоретически – интересно ) Но практически, на lua приложухи сложновато будет писать )
Выбирали язык для новых сервисов внутри команды почты =) В MailRu команд много )
Спасибо! Keep-Alive в ab нам был не нужен – иначе мы бы получили тот же wrk =)
На локальных тестах – где у кого ~10ms? ) Тесты и серверы запускались на одной виртуалке, да. Естественно, по очереди. Да, может, лучше было бы запустить где-то в облаке, но в среднем, результаты из прогона в прогон – сохраняются. Тем более, что нам важнее было определить не производительность в общем, а производительность относительную.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity