Бенчмарка различных языков программирования 21-Apr-09
------------------------------------------- ---------
Подробности в моём Живом Журнале (сильно устаревшие)
Машина: Pentium III 800 MHz память 768 Mb Win XP SP3
Данные: текстовый файл на 742900 строк (30 мегабайт)
Да, я знаю, в чём разница между языком и реализацией
Новости:
* Python 2.6.2 (интерпретатор и psyco)
Интерпретаторы
Язык Версия Строчки Время
---- ------ ------- -----
clisp 2.47 23 + 4 1:13 wu
factor 0.91 11 + 5 3:12 (1)
gawk 3.1.6 9 + 3 35
icon 9.3.2 8 + 0 1:43 (2) t
jscript 5.7 22 + 5 25:40
lua 5.1.2 20 + 6 32
newlisp 10.0.3 6 + 3 1:03 =
perl 5.10.0 8 + 1 34 t
python 2.6.2 10 + 5 18 (3)
ruby 1.8.6 7 + 2 1:17
ruby 1.9.1 7 + 2 2:02
scm 5e4 19 + 7 8:36 (4) *t
s-lang 2.0.6 15 + 4 56
(1) кажется, factor на самом деле - jit-компилятор
(2) интерпретатор + байт-код = исполняемый файл
(3) питон быстрее работает с локальными переменными,
поэтому тело скрипта завёрнуто в main
(4) сплит, хеши, сортировка - всё написано на схеме,
поэтому так медленно (slib считается частью scm)
Интерпретаторы (djgpp)
Язык Версия Строчки Время
---- ------ ------- -----
lua 5.1 20 + 6 26
perl 5.6.1 8 + 1 25 t
Just In Time Компиляторы
Язык Версия Строчки Время
---- ------ ------- -----
luajit 1.1.3 20 + 6 26
psyco 1.6 14 + 5 14 t
Виртуальные Машины
Язык Версия Строчки Время
---- ------ ------- -----
java 1.6.0 25 + 3 25 tu
Компиляторы
Язык Версия Строчки Время
---- ------ ------- -----
gcc 3.4.5 102 + 20 8 ht
g++ 3.4.5 18 + 7 24 *=
ocaml 3.10.2 10 + 4 24 (5) t
Компиляторы (ручная оптимизация)
Язык Версия Строчки Время
---- ------ ------- -----
g++ 3.4.5 34 + 13 18 *=
ocaml 3.10.2 22 + 5 21 (5) wt
(5) я подозреваю, что с pcre-ocaml работать будет гораздо
быстрее, но я не сумел собрать её с помощью mingw :-(
TODO: ocaml+pcre, PLT scheme, python 3.0, Haskell, C#, D
Буквы и значки в последней колонке:
w - разбиение на слова делается вручную
h - ассоциативная таблица вручную
s - сортировка вручную (пока не было)
* - чтение по словам, а не по строчкам
= - упорядоченная ассоциативная таблица
t - таблица названа total вместо score
u - юникод принудительно имитирует байты
Ссылки наружу
-------------
Наиболее известная бенчмарка
Рейтинг популярности языков
Разновообразелый штук
---------------------
Скрипт, которым сгенерена эта страница
Текст этой страницы в другом формате
Скрипт для подсчёта содержательных строчек
Скрипт для замера времени выполнения
Скрипт для упаковки всего этого вместе
Всё вместе