Поскольку, как всем известно, основное предназначение различных функциональных ЯП состоит в расчете факториалов, давайте померяемся - какой ЯП это делает быстрее (при условии что делает правильно)? Естественно имеет значение машина на которой идет счет.
Условия такие - надо посчитать 10000! и вывести его в 16ти-ричном виде (буквочки маленькие), без всяких '0x' вначале и какой то служебной лабуды в конце. Что бы не постить прстыни, для контроля правильности ответа предлагается использовать md5sum. Вот как это выглядит на втором питоне:
$ python -c 'print hex(reduce( long.__mul__, range(1,10000+1), 1L ))[2:-1]' | md5sum
3de6339590fbdf0a1c0ae2f2b820f8bf -
Вот однострочник, выводящий модель проца, частоту и время работы (я привожу несколько примеров для доступных мне машин):
$ ssh host1 "less /proc/cpuinfo | grep 'model' | tail -n 1; less /proc/cpuinfo | grep 'cpu MHz' | tail -n 1; time python -c 'print hex(reduce( long.__mul__, range(1,10000+1), 1L ))[2:-1]' | md5sum"
model name : AMD FX(tm)-8320 Eight-Core Processor
cpu MHz : 1400.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.058s
user 0m0.048s
sys 0m0.008s
-------------------------------------------------
model name : Intel(R) Core(TM)2 CPU U7500 @ 1.06GHz
cpu MHz : 798.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.301s
user 0m0.256s
sys 0m0.024s
--------------------------------------------------
model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
cpu MHz : 1600.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.042s
user 0m0.040s
sys 0m0.000s
--------------------------------------------------
model name : AMD Phenom(tm) 9550 Quad-Core Processor
cpu MHz : 1100.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.083s
user 0m0.068s
sys 0m0.012s
---------------------------------------------------
model name : AMD Phenom(tm) 9850 Quad-Core Processor
cpu MHz : 2506.801
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.123s
user 0m0.118s
sys 0m0.004s
----------------------------------------------------
model name : Intel(R) Core(TM)2 Quad CPU Q9450 @ 2.66GHz
cpu MHz : 2506.801
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.124s
user 0m0.118s
sys 0m0.006s
----------------------------------------------------
model name : AMD Opteron(tm) Processor 6174
cpu MHz : 2506.801
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.120s
user 0m0.119s
sys 0m0.002s
----------------------------------------------------
model name : Intel(R) Xeon(R) CPU X5670 @ 2.93GHz
cpu MHz : 1600.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.120s
user 0m0.060s
sys 0m0.004s
Я к чему предлагаю померяться - только что обнаружил в соседнем треде, что вечный-тормоз-питон в таком тесте на порядок(!) обогнал священную-корову-лисп;-)))
Предлагайте свои решения на других ЯП (хаскель очень интересен;-))