@AbyssHunt

Golang в чём смысл?

В чём прикол Golang-га? Я думал, что он быстрее того же шарпа и выигрывает многократно, но на практике это не так.
В бенчах https://benchmarksgame-team.pages.debian.net/bench... Go выигрывает всего 2 бенча, но бенчи та ещё дичь. Потом решил посмотреть tehcmepower и Go там выигрывает только в Cached queries, когда тот же ASP.CORE/NET практически занимает везде топ 5 и при этом обгоняет Go, хотя Golang изначально и задумывался, как яп для хайлоада, но почему его даже не то что сам шарп обгоняет, а его нагруженный фреймворк? Давно присматриваюсь к Golang-гу, но походу его единственный плюс это горутины(go func) и простота, ну и на 2-3k rps больше. Сразу говорю это не хейт в сторону языка, просто грустно, что шарп его чпокает. Если я не прав, то можете, пожалуйста, описать его сильные стороны и поправить меня на счёт бенчмарков.
  • Вопрос задан
  • 521 просмотр
Пригласить эксперта
Ответы на вопрос 4
bingo347
@bingo347
Crazy on performance...
Во-первых, любой бенчмарк можно написать так, что визуально будет выглядеть очень похоже, но на деле у одной технологии будут использоваться сильные стороны, а у другой нет (понятно кто выиграет). Притом это можно сделать как специально, дабы превознести одну из технологий, так и ненамеренно, просто потому-что человек писавший бенчмарк очень хорошо знает одну технологию и посредственно другую.
Например, я вполне умею написать многие вещи на C, C# и Go, но знаю эти языки очень поверхностно, с другой стороны я очень хорошо знаю JS (в том числе достаточно много копался в кишках v8) и Rust, как думаете, кто победит, если я начну писать бенчмарки для сравнения этих 5 языков?

хотя Golang изначально и задумывался, как яп для хайлоада
Go изначально задумывался как ЯП, который сможет быстро освоить любой, кто базово знаком с программированием, дабы Google мог нанять тысячу джунов и они быстро прототипировали идеи без заморочек C/C++.

А еще вся супер-пупер параллельность - на самом деле асинхронщина, работающая на небольшом пуле реальных потоков ОС. Притом без вариантов. Асинхронный рантайм - это тоже не бесплатно. На всяких I/O штуках асинхронщина показывает себя очень хорошо, но на сугубо вычислительных задачах - все ее преимущества становятся минусами. На шарпе есть контроль, где использовать асинхронщину, а где вынести вычисления в настоящий поток. На Go такой возможности нет.

P.S. а вообще, в реальном мире Вы практически никогда не упретесь в производительность языка, ну разве что будете всюду втыкать самые неоптимальные алгоритмы. На деле бутылочным горлышком окажутся сеть и диски. И даже в сугубо вычислительных штуках Вы скорее упретесь в оперативку и процессорные кэши, а не в ЯП.
Ответ написан
1. Go был придуман в гугле для решения задач Гугла ещё задолго до того, как появился .net core со всем его перформансом.
2. Go всё ещё порождает более компактные и не зависящие от окружения бинарники.
3. Чтобы C# показывал результаты как в techempower - нужно писать код так, как никто его не пишет в реальном мире.
В бэклоге . net команды даже пункты отдельные есть за то чтобы быть топ1 в бенчмарках
4. Go всё ещё гораздо проще Шарпа, ибо п1
Ответ написан
Комментировать
@nakem
Я тоже раньше мыслил такими категориями. Мне тоже казалось, что самые крутые технологии - это те, которые на бенчмарках всех выносят и на хабрах хвалят. "Топ 5 языков для изучения в 2019\20\21\22\23..."
Нет)) Это не так. Можно принять это за догму:)))
Ответ написан
Комментировать
Assembler по идее всех быстрее и сильнее, но благодаря умелому говнокодингу на нём, полученный код может быть легко отчпокан хорошо написанным скриптом на питоне. И сливать будет по страшному бенчам, написанных для проверки сферичности коней в адронном вакууме.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы