Здравствуйте, kaa.python, Вы писали:
KP>Не для Java, но для C#, Go и даже Haskell? Не находишь что список немного внезапный при том, что для описанного тобой сценария с "какими-нибудь HTTP-серверами" Go тоже будет быстрее?
Ну, в C# и Go, как я понял задействовал ансэйф и сплайсы (новая фича дотнета безопасная замена указателям). В Яве на это забили. В Хаскеле это вообще было бы странно. Так что все логично, языки и рантаймы имеющие низкоуровневые фичи выигрывают в низкоуроневой пенесометрии. А Хаскель все не даже, а слил. И сильно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, VladD2, Вы писали:
VD>Ну, в C# и Go, как я понял задействовал ансэйф и сплайсы (новая фича дотнета безопасная замена указателям). В Яве на это забили. В Хаскеле это вообще было бы странно. Так что все логично, языки и рантаймы имеющие низкоуровневые фичи выигрывают в низкоуроневой пенесометрии. А Хаскель все не даже, а слил. И сильно.
В любом случае писать драйвер на ВМ это из области извращений, был у меня ПК на работе, у которого часть софта для звуковухи был на дотнете
еще не было ССД, это был такой трэш когда я с клавы пытался изменить уровень. Первое обращение всегда было болью. Потом регулятор оживал и начинал реагировать, но все же.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, VladD2, Вы писали:
VD>Что значит слился? Они выкидывали языки чтобы масштаб увеличить. Ну, и не факт, что реализация оптимальна. Плюс время идет и МС за это время несколько оптимизировал дотнет. В тесте используется netcoreapp2.1, а уже 5.0 на дворе. Говорят там подоптимизировали многое. Плюс код так себя. Можно по выжимать из него.
Выкидывали еще и потому, сейчас не могу найти где именно это было, что после определенной нагрузки производительность приложения падала до 0. Про оптимальный код я полностью согласен.
VD>Что-то ты явно приукрашиваешь. Как языки (точнее рантаймы) распределились на три группы: VD>Image: batches-3.3.png
VD>И Хаскель явно в конце второй группы с огромным отставанием от лидеров. Фактически он слился.
Ну как бы сам факт того что два функциональных языка в группе с Java, в оптимизацию которой дохулиар вбухан сам со себе интересен. Разве нет?
VD>Да, питон показал просто константную скорость с твердой константой — 0.
Ну тут однозначно же — он не для этого
VD>С Явой и Свифтом вообще странно и надо разбираться. А вот Хаскель таки слился. Как и ОКамл (что тоже странно). Твоих восторгов по производительности Хаскеля не разделяю.
Меня в первую очередь заинтересовало то, что функциональные, Хаскель так вообще один из самых чистых языков с точки зрения функционального программирования, обходят или держатся в группе с языками в скорость для которых реально вкладываются.
Re[2]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, varenikAA, Вы писали:
AA>Странно что нет кода на https://dlang.org/
Стюардессу закопали
AA>Последний раз сравнивал, отличий в перформансе в сравнении с растом не заметил(мерял time в linux). AA>Очень хороший ЯП, не заслужено забыт. Хотя вижу потихоньку развивается. Глава в прошлом году сменился. У него есть политика развития. посмотрим.
Заслуженно, более чем заслуженно. Нельзя сначала выкатывать 1.х, говорить что это стабильно, давать писать в проде, а потом говорить "ой, а будет не совместимая ветка 2.х". Время этого этого языка ушло, а с добавлением метапрограммирования в Го, у него вообще преимущества испарятся.
Re[3]: эксперимент :: сетевой драйвер на 10 языках
KP>Заслуженно, более чем заслуженно. Нельзя сначала выкатывать 1.х, говорить что это стабильно, давать писать в проде, а потом говорить "ой, а будет не совместимая ветка 2.х". Время этого этого языка ушло, а с добавлением метапрограммирования в Го, у него вообще преимущества испарятся.
Здравствуйте, varenikAA, Вы писали:
AA>ну вчера тыкал, пакетов потихоньку становится больше.
Мне очень нравился D, но на данный момент у него, как мне кажется, ноль шансов. На нем банально не найти работы, даже на каком-нибудь OCaml и то проще будет
AA>производительность очень важный фактор(сравнение с го): AA>https://github.com/huntlabs/hunt/blob/v1.7.5/docs/images/benchmark-1.png
А что там тестируют я не понял, описание честно скажем, мутное "The Date field in http header is set". Отправка/прием статической странички по HTTP? Ну это маловато как бы для хоть какого-то утверждения. А если говорить про производительность Го — её хватает во всех случаях, пока наличие GC не становится проблемой.
Re[6]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, VladD2, Вы писали:
VD>Ты как всегда в точку попадашь. Как-то нарвался на вот такую инфу: VD>
VD>Обычно используют популярные Java (одноклассники), PHP (facebook, vk), C# (stackoverflow), Python (youtube), Ruby (twitter) — стандартные обычные языки, когда можно найти и хорошие инструменты, и много разработчиков.
VD>Ну, может врут.
Врут. Facebook использует не php, а свой диалект с трансляцией в C и компиляцией результата gcc (см. Hiphop). А потом вовсе перешла на свой язык Hack.
Одноклассники кроме java ещё пишут на scala. Потом Одноклассники объединились с vk и у них все больше общей кодовой базы появляется. Сейчас там появляется все больше машинного обучения и на серверах работает C++, CUDA, Python.
Re[8]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, kaa.python, Вы писали:
KP>Так же интересно то, что драйвер на Java показал довольно хреновые результаты, не Python (который как и положено Python-у слился самым первым, показав всю свою знаменитую скорость работы), но тем не менее. Как же тогда её в HFT используют? Тут я сильно озадачился... надо тюнить JVM как я понимаю?
Это допустимые тайминги для ресурсоёмких алгоритмов на разных языках. Примечательно, что для C# это 3 секунды, для Java 4, хотя для C# используется непонятно какой древний компилятор из mono. Там много интересного.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, IT, Вы писали:
IT> Вот вам ещё для раздумий интересная информация — https://www.hackerrank.com/environment/languages. IT> Это допустимые тайминги для ресурсоёмких алгоритмов на разных языках. Примечательно, что для C# это 3 секунды, для Java 4, хотя для C# используется непонятно какой древний компилятор из mono. Там много интересного.
Особенно впечатляет bash — одна секунда.
Здравствуйте, ·, Вы писали:
IT>> Это допустимые тайминги для ресурсоёмких алгоритмов на разных языках. Примечательно, что для C# это 3 секунды, для Java 4, хотя для C# используется непонятно какой древний компилятор из mono. Там много интересного. ·>Особенно впечатляет bash — одна секунда.
Тоже обратил внимание. Жаль не пишу на нём, не могу проверить. По плюсам и шарпу примерно соответствует.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: эксперимент :: сетевой драйвер на 10 языках
Да, согласен, это довольно интересные значения и они неплохо иллюстрируют кривизну рук тех, кто их использует. Там Go требует большое памяти чем Java, а Rust больше времени чем C++, Java, Kotlin и Go. Полагаю что они просто задолбались слушать жалобы от пользователей и решили что проще накинуть времени и ресурсов нежели объяснять участникам что у них руки из жопы растут
IT>Это допустимые тайминги для ресурсоёмких алгоритмов на разных языках. Примечательно, что для C# это 3 секунды, для Java 4, хотя для C# используется непонятно какой древний компилятор из mono. Там много интересного.
Ну я бы не стал такие далеко идущие выводы делать. Если уж хочется ресурсоемкие алгоритмы сравнивать, ты 100% знаешь где искать, и там .NET обходит JVM ну может на 10%.
Здравствуйте, kaa.python, Вы писали:
KP>Да, согласен, это довольно интересные значения и они неплохо иллюстрируют кривизну рук тех, кто их использует. Там Go требует большое памяти чем Java, а Rust больше времени чем C++, Java, Kotlin и Go. Полагаю что они просто задолбались слушать жалобы от пользователей и решили что проще накинуть времени и ресурсов нежели объяснять участникам что у них руки из жопы растут
Т.е. Go программисты — это типичные нытики, а C# программисты — настоящие суровые парни, которые никогда никому не жалуются? Ну что же, вполне возможно.
KP>Ну я бы не стал такие далеко идущие выводы делать. Если уж хочется ресурсоемкие алгоритмы сравнивать, ты 100% знаешь где искать, и там .NET обходит JVM ну может на 10%.
Думаю, дело не только в этом. На хакерранке алгоритмы пишутся без дополнительных библиотек, а у джавы родовая травма с примитивными коллекциями, которая как раз решается исключительно кастомным кодом. Большинство алгоритмов на хакерранке — это манипуляция целыми числами, что ставит джаву в неудобное положение — либо использовать массивы, либо коллекции объектов.
Кстати, в твоих "ресурсоёмких алгоритмах" наблюдается примерно таже хрень.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, Sharov, Вы писали:
S>·>Особенно впечатляет bash — одна секунда. S>А что тут удивительного, вызов заоптимизированных Си программ по сути. Быстрее будет только на самом Си написать.
Дык в том-то и оно — для Си — две секунды.
Могу предположить, это дефолтное значение. И т.к. никто на bash не пишет, то никто и не жаловался, чтобы увеличили.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, IT, Вы писали:
IT>Т.е. Go программисты — это типичные нытики, а C# программисты — настоящие суровые парни, которые никогда никому не жалуются? Ну что же, вполне возможно.
Мне думается что уровень усредненного разработчика на C# выше чем на Go. Go примитивный и его часто используют как последнее средство когда у тебя есть команда из условных студентов, а что-то релизить надо.
Re[5]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, ·, Вы писали:
S>>·>Особенно впечатляет bash — одна секунда. S>>А что тут удивительного, вызов заоптимизированных Си программ по сути. Быстрее будет только на самом Си написать. ·>Дык в том-то и оно — для Си — две секунды.
Это я не видел, по ссылке не ходил. Что Корузо напел... А так исходя из здравых соображений, вполне
можно допустить, что для баша время могут сделать сопоставимо с чистым Си.
·>Могу предположить, это дефолтное значение. И т.к. никто на bash не пишет, то никто и не жаловался, чтобы увеличили.
Да, скорее всего, мало найдется желающих все это на баше сделать, поэтому поставили какой-то baseline.
Кодом людям нужно помогать!
Re[2]: эксперимент :: сетевой драйвер на 10 языках
Здравствуйте, ltc, Вы писали:
ltc>подумал, что для львиной доли применений на сегодняшнем железе подойдет вообще любой язык, главное не допускать совсем уж жестких алгоритмических косяков. А священные войны типа "мой крутой С++ быстрее вашего отстойного C#" все менее и менее актуальны.
Это даже не алгоритмический косяк, а результат полного наплевательства и мышления в стиле "выливаем воду из чайника, и таким образом сводим задачу к предыдущей".