Бенчмарка различных языков программирования         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  - юникод принудительно имитирует байты

Ссылки наружу
-------------
Наиболее известная бенчмарка
Рейтинг популярности языков

Разновообразелый штук
---------------------
Скрипт, которым сгенерена эта страница
Текст этой страницы в другом формате

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

Скрипт для упаковки всего этого вместе
Всё вместе