Скорость языков программирования (IBM)

Еще одно исследование на тему «скорость языков программирования» обнаружил на сайте IBM.

Ссылка на первую часть. Ссылка на вторую часть.

Результаты в таблице представлены по фактору скорости исполнения:

Фактор скорости Язык
1 … 2 C, GCC C++, Go, Ocaml
2 … 5 Cobj C++, PureBasic
5 … 10 Ocaml
10 … 20 Java
20 … 50 Lua, Scheme, Haskell
50 … 100 Python 2, Ruby, JavaScript, Scala
100 … 200 Perl, Python 3, PHP
200 … 500 bash

По сравнению с тестами от Google, язык Go вырвался на первые места, Java обогнал Scala и в данном тесте был задействован … командный процессор bash, в теории это вовсе не язык программирования, но им виднее))

Казалось бы, обычный тест, но изначально автор сделал очень хорошее примечание, а именно:

Подобные оценки не могут служить критерием качества и даже производительности …

У читателя наверняка возник вопрос, а почему же тогда статья называется «Производительность языков программирования»?

Все чрезвычайно просто, продолжу цитирование:

Различные по идеологии языки будут иметь совершенно различающуюся относительную производительность на различных классах задач …

А зачем тогда проводились такие тесты, и зачем опубликованы их результаты? Смотрим остаток примечания:

… речь может идти только о сравнении порядков производительности и на определённом классе задач.

ИМХО, исчерпывающие и объективное объяснение смысла всех этих тестов на скорость разных языков программирования.

C и C++ компилируемые языки, lua встраиваемый в компилируемые языки, Java кроссплатформенна, Scala родственник Java, JavaScript в браузерах (возможно грубоватое описание), PHP в основном на серверах, а bash вообще командный процессор.

То что можно просто сделать на lua (к примеру та же организация логики в играх) делается и на C/C++ но на lua проще. Логику на PHP я не встречал. Поэтому каждый язык имеет свое предназначение, и это не всегда скорость.

Возникает логичный вопрос: а зачем тогда вообще все эти тесты? Ответ прост: для выявления производительности на конкретной задаче. К примеру есть задача организации рендера для игры, причем этот рендер чрезвычайно прожорливый. На чем его делать? Java кроссплатформенный язык, но исполняется на виртуальной машине Java VM, а вот на С++ кроссплатформенно не сделать (без определенных усилий), что делать? Выбор в пользу C++, но что есть рендер тривиальный и не требует считать каждую миллисекунду? А если еще и кроссплатформенность нужна то конечно лучше Java))

Все подобные тесты дают лишь примерную оценку производительности языков программирования, для того чтобы мы с Вами могли ориентироваться при решении определенной задачи на определенный язык, на основе этих тестов.

Холивар можно устроить из чего угодно, а надо ли?))

Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

*

code