В Google провели сравнение производительности C++, Java, Go и Scala

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 5 Jun 2011.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Роберт Хандт (Robert Hundt) из компании Google опубликовал отчет (https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf) с результатами тестирования качества оптимизации циклов в реализациях языков C++, Java, Go и Scala. Как и ожидалось, в тестах производительности и потребления памяти лидирует C++, но в отчете отмечается, что достижение высоких показателей связано с необходимостью проведения дополнительных оптимизаций, которые требуют дополнительной квалификации и зачастую не используются программистами среднего уровня. Java отмечен как язык, наиболее простой для реализации кода, но с другой стороны труднопредсказуемый в плане анализа производительности - использование Java VM и сборщика мусора значительно затрудняет тюнинг производительности.

    Оценка числа строк кода, потребовавшихся для реализации поставленной задачи (в списке указан размер, относительно кода на языке Scala. Признаком Pro отмечены результаты оценки варианта кода после дополнительного тюнинга и использования специфичных для языка конструкций). Наиболее компактным языком оказался Scala - для решения задачи потребовалось 658 строк.

    [​IMG]

    Размер результирующих бинарных файлов, после сборки (показатели, относительно размера сгенерированного JAR-архива). Java и Scala работают поверх Java VM и генерируют байт код, а C++ и Go - готовые к исполнению машинные инструкции. Наиболее компактный результирующий файл получился у Java - 13 Кб, у языка Go бинарный файл занял 1.2 Мб, а оптимизированный вариант на C++ - 41 Кб.

    [​IMG]

    Потребление памяти (показатели, относительно реализации на языке C++). Для работы кода на Java и Scala потребовалось в 6 раз больше памяти, чем на языке Cи. Наибольшую прожорливость проявил язык Go.

    [​IMG]

    Время компиляции (показатели, относительно языка Go, который отличился высокой скоростью компиляции).

    [​IMG]

    Производительность (показатели, относительно оптимизированного варианта на С++).

    [​IMG]

    04.06.2011
    http://www.opennet.ru/opennews/art.shtml?num=30784
    http://www.theregister.co.uk/2011/06/03/google_paper_on_cplusplus_java_scala_go/