Любопытные и достаточно красноречивые результаты тестирования эффективности четырех принципиальных языков программирования: C++, Java, Scala, Go, проведенное специалистами Google.
Тестирование - на самых базовых вещах: циклы, массивы, списки и пр. Без использования трюков. И старый добрый C++ выглядит очень бодро - чемпион по двум принципиальным показателям: компактности исполняемого кода и производительности.
Хорошо видно, что легенды о производительности Java - это все-таки легенды. А что же Go, детище Google? Сравнительно компакные исходники, быстро компилируются. Но толку-то... Лучшее - враг хорошего :)
Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365
+66 голосов |
C++ вроде бы ничего удивительного,
убивает Java по сравнению с Scala (учитывая, как именно исполняется полученный код).
p. 3: "Java does not allow arrays of generic types. However, lists are index-able, so this code is permissible:
int[] header = new int[size]; - ???
However, this appeared to incur tremendous GC overhead. In order to alleviate this problem we slightly rewrite the code...
Scala allows arrays of generics:
var header = new Array[Int](size)
Scala/Java Garbage Collection: Since GC has other negative performance side-effects, one could estimate that without the GC anomaly, Java would be about roughly 30% faster than Scala."
Итог табл. 8.
Я не специалист и нет времени, чтобы разобраться глубоко,
но что-то в этом исследовании настораживает со Scala
(ощущение сходное с ощущениями от чтения блогов наших коллег с мелафонами, без упоминания лейбла которых не работают даже сервисы Майкрософт))))
Имхо новую легенду тоже надо проверить со всей тщательностью
А с "чистым" С постеснялись сравнить?
а что сейчас пишут на чистом С?
Дрова?
Программы для МК в промэлектронике, к примеру - если в промышленных масштабах, ну и отдельные психи в университетах продолжают писать разные библиотеки, которыми потом пользуются все. Тот же гугл, кстати совсем не чурается С там, где в этом есть смысл.
Но поинт был не в этом - в оригинальной статье совсем не оригинальный вывод: чем ниже порог вхождения для быдлокодеров, тем медленнее и больше (по весу) код. Т.е переписать конкретно этот "бенчмарк" на pure С спецам из гугла не составило бы большого труда, но есть большая вероятность, что тогда и плюсы имели бы бледный вид.
ассемблер забыли:)))
Про ASM есть смысл говорить только в рамках одной платформы, но даже в этом случае именно писать на нем смысла мало - компиляторы давно достаточно умные. Но вот знать ASM, чтобы понимать, в каком месте компилятор скосячил, и что с этим делать - программисту действительно не помешает. Быдлокодеру - не обязательно.