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

  • Автор темы Автор темы Olej
  • Дата начала Дата начала
O

Olej

Одна и та же программа, записанная на разных языках программирования, будет выполняться с очень различающейся скоростью.

Одни языки программирования компилируются в нативный машинный код и будут очень быстрыми (C, C++, Go, ...).
Другие языки компилируются в промежуточный байт-код, который затем интерпретируется при выполнении (Java, Python, ...).
Третьи языки непосредственно интерпретируются из исходного кода (JS, PHP, Lua, ...).
Скорости выполнения программ на них будет сильно различаться.
Насколько сильно?
 
  • Нравится
Реакции: Runinterface
Скорости выполнения программ на них будет сильно различаться.
Насколько сильно?
Я когда-то проводил такое сравнение, и даже написал на этот счёт обстоятельную статью...
Вот она (нашёл): (это достаточно черновая версия, но понятно).
Там же - архив тестовых примеров для повторения и проверки.

Для кой-кого может оказаться изрядной неожиданностью, что один и тот же алгоритм, записанный на разных языках программирования, может выполняться с различием по скорости ... до 200-500 раз, а то и более. :eek:

После этого задумаешься при случае, на каком же языке программирования записывать программу. :oops:
 
Последнее редактирование модератором:
(это достаточно черновая версия, но понятно).
Вспомнил...
Есть более внятная для чтения версия этого материала, подготовленная для IBM DeveloperWorks (русскоязычного отделения IBM).
Вот:

 
Последнее редактирование модератором:
Тут меряется не производительность языка, а время старта vm или интерпретатора.
Написание бенчмарков non penis canis est
 
Ну для нативных языков меряется время создания процесса, что тоже не самая дешевая операция.
Вы меряете время старта для нативных и интерпретируемых языков и ВНЕЗАПНО обнаруживаете, что для нативных это самое время меньше. Ну ок, это и без тестов понятно и никому не интересно.

К производительности ваши тесты не имеют никакого отношения.
 
Вы меряете время старта для нативных и интерпретируемых языков
Когда запущенное приложение работает (в цикле, в рекурсии) 5 минут, эти 5 минут запускается интерпретатор? или 5 минут стартует "создание процесса"?
Очнитесь...
 
какие пять минут???
у вас в тестах секунды в лучшем случае. или чукча не читатель.

вы бы хоть нормировали на время запуска пустого приложения.
 
у вас в тестах секунды в лучшем случае.
1. Там тест специально очень высокой скорости роста O(N), так что я наблюдал и минуты ... и вы можете
2. Но если даже и секунды ... то сколько вам секунд нужно на запуск интерпретатора JS на процессоре i7 ?
 
Экспоненциальная сложность у этой реализации финобачи.
Я не знаю, что вы наблюдали. Это и так очевидно, что чем длительнее тест, тем меньше влияние переходных процессов.
Мы тут обсуждаем опубликованный вариант.

Я хз как с js.
А вот серверный хотспот у меня стартует где-то за 0m0.066s, что вполне сравнимо с вашим результатом для java и scala.
Т.е. как минимум для двух языков установочные процессы оказывают значимое влияние на результаты.

А еще можно вспомнить, что JIT надо прогревать....
 
Последнее редактирование:
Мы тут обсуждаем опубликованный вариан
Не вводите просматривающих форум в заблуждение.

Вот выполнение тестовой задачи на Python (это другой процессор, но те же соизмеримые приведенным времена):
Код:
[olej@dell speed]$ time nice -9 python fibo.py 36
24157817
real    0m12.193s
user    0m12.127s
sys    0m0.006s
А вот запуск "пустого" приложения Python:
Код:
[olej@dell speed]$ time nice -9 ./null.py

real    0m0.022s
user    0m0.017s
sys     0m0.005s
Сколько там % (вашей правоты)???
0.14% !
И, обратите внимание, что sys время примерно одинаково - это и есть (очень грубо) запуск интерпретатора Python, а время user - выполнение пользовательского кода - различаются в 713 раз, 3 порядка!
 
Тут меряется не производительность языка, а время старта vm или интерпретатора.
Но за подсказку спасибо: во всех последующих обсуждениях в разных местах я буду обязательно упоминать такую аргументацию, чтобы тут же показывать что это не так. ;)
 
А вот серверный хотспот у меня стартует где-то за 0m0.066s, что вполне сравнимо с вашим результатом для java и scala.
OK, Java:
Код:
[olej@dell speed]$ java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b16)
OpenJDK 64-Bit Server VM (build 25.111-b16, mixed mode)
(я специально на этом процессоре подбираю время выполнения того же порядка, что и в обзоре)
Код:
[olej@dell speed]$ time nice -9 java fibo 41
267914296

real    0m1.510s
user    0m1.495s
sys    0m0.021s

[olej@dell speed]$ time nice -9 java nill

real    0m0.098s
user    0m0.081s
sys    0m0.025s
Даже здесь 18.5 раз ... 5% - что вполне можно пренебречь.
 
Не вводите просматривающих форум в заблуждение.
Я ничего не знаю про ваши фантазии. Я комментирую бенчмарк опубликованный на developerworks.

Ввести в заблуждение тут пытаетесь только вы. Почему финобачи от 36, а не как в остальных тестах от 30? Числа не такие красивые получаются? Раз в 16 отличаются?

Если делать честно, то получаем, что для питона влияние установочных процессов вполне значимые 3%-4%.
A для jvm влияние этих самых установочных процессов (для финобачи от 30) 30%-50%

У вас бенчмарке бегает неучтенный фактор, который варьируется на порядки от теста к тесту. Бенчмарк кривой, ничего личного.

[olej@dell speed]$ time nice -9 java fibo 41
Даже здесь 18.5 раз ... 5% - что вполне можно пренебречь.
А вы для 30 посчитайте, как в обзоре. Больше 50% получилось? =)
 
Последнее редактирование:
Ввести в заблуждение тут пытаетесь только вы. Почему финобачи от 36, а не как в остальных тестах от 30? Числа не такие красивые получаются? Раз в 16 отличаются?

Если делать честно, то получаем, что для питона влияние установочных процессов вполне значимые 3%-4%.
A для jvm влияние этих самых установочных процессов (для финобачи от 30) 30%-50%

Ну, "финобачи" - это что-то из ваших ночных детских страхов, застрявших в подсознании.
А мы считаем общеизвестные из математики числа Фибоначчи.
Ну да ладно с этим...

А почему "36 а не 30"?
Элементарно, Ватсон! :D
Я просто подобрал те значения аргумента вычисляемой функции, которые на другом процессоре даёт цифры, очень совпадающие с теми, что показаны в первоначальном тексте начала 2014 года.

А 3-4% ... да даже 30-50% (только где вы их нагребёте? :confused:) - это величины, которыми можно запросто пренебрегать, когда идёт грубое сравнение порядков величин.
(а замер временных интервалов в программном коде и нельзя делать точнее, чем оценка порядков ... иначе это будет заведомо ложная интерпретация ... что относится, кстати, и к любым профилировщикам)
 
Ну, "финобачи" - это что-то из ваших ночных детских страхов, застрявших в подсознании.
А мы считаем общеизвестные из математики числа Фибоначчи.
Ну да ладно с этим...
да я у же в курсе, что вы отсутствии аргументов, цепляетесь за граматику

А почему "36 а не 30"?
Элементарно, Ватсон! :D
Я просто подобрал те значения аргумента вычисляемой функции, которые на другом процессоре даёт цифры, очень совпадающие с теми, что показаны в первоначальном тексте начала 2014 года.

А смысл? Оригинальный бенчмарк менее кривым не стал. Не ну я понимаю, это что бы числа в посте красивее были. =)

А 3-4% ... да даже 30-50% (только где вы их нагребёте? :confused:) - это величины, которыми можно запросто пренебрегать, когда идёт грубое сравнение порядков величин.

Ага особенно, когда этих пренебрегаемых величин набирается на десятки процентов и мы делаем грубое сравнение порядков не тех величин, которые хотели.

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

Хотя и с грамматикой следует дружить ... человек, не научившийся грамотно говорить и писать - не заслуживает уважения. :D
 
Ага особенно, когда этих пренебрегаемых величин набирается на десятки процентов и мы делаем грубое сравнение порядков не тех величин, которые хотели.
Всё.
Хватит продолжать вот это бла-бла-бла ... пустое блеяние.

Умеете писать классные бэнчмарки - напишите и покажите.
Всё же элементарно, Ватсон! ;)

(«я сделал всё, что мог, кто может, пусть сделает лучше»)

Слышали такое?
(>2000 лет назад сказано)
 
Последнее редактирование модератором:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!