Вот я тут ради прикола сделал простейший экперимент
Взял первую, саму простую задачу из Проджект Эйлер. Найти сумму первых N чисел которые делятся на 3 или на 5. В начальной задаче N = 999 (https://projecteuler.net/problem=1), но я взял N = 9,999,999 чтобы дольше работало.
Код на Хаcкеле (сорри, я не знаю Хаскель, почти совсем, наверно это не самый оптимальный код)
isgood n = if (n `mod` 3 == 0) || (n `mod` 5 == 0) then True else False
result = sum $ filter isgood [1..9999999]
main = do print result
Код на Джаваскрипте
var res = 0;
for (var i = 1; i <= 9999999; i++) {
if (i % 3 == 0 || i % 5 == 0) {
res += i;
}
}
console.log(res);
Результаты работы компилированного Хаскеля
$ gtime ./first +RTS -K256M -RTS
23333331666668
3.35
user 0.23system 0:03.59elapsed 99%CPU (0avgtext+0avgdata 2312650752maxresident)k
0inputs+0outputs (0major+141238minor)pagefaults 0swaps
Результаты работы Джаваскрипта под Ноде
$ gtime node first.js
23333331666668
0.20
user 0.01system 0:00.22elapsed 100%CPU (0avgtext+0avgdata 57032704maxresident)k
0inputs+0outputs (0major+3720minor)pagefaults 0swaps
Хаксель компилировался командой
ghc first.hs -rtsopts
Почему такая адская разница?
Взял первую, саму простую задачу из Проджект Эйлер. Найти сумму первых N чисел которые делятся на 3 или на 5. В начальной задаче N = 999 (https://projecteuler.net/problem=1), но я взял N = 9,999,999 чтобы дольше работало.
Код на Хаcкеле (сорри, я не знаю Хаскель, почти совсем, наверно это не самый оптимальный код)
isgood n = if (n `mod` 3 == 0) || (n `mod` 5 == 0) then True else False
result = sum $ filter isgood [1..9999999]
main = do print result
Код на Джаваскрипте
var res = 0;
for (var i = 1; i <= 9999999; i++) {
if (i % 3 == 0 || i % 5 == 0) {
res += i;
}
}
console.log(res);
Результаты работы компилированного Хаскеля
$ gtime ./first +RTS -K256M -RTS
23333331666668
3.35
user 0.23system 0:03.59elapsed 99%CPU (0avgtext+0avgdata 2312650752maxresident)k
0inputs+0outputs (0major+141238minor)pagefaults 0swaps
Результаты работы Джаваскрипта под Ноде
$ gtime node first.js
23333331666668
0.20
user 0.01system 0:00.22elapsed 100%CPU (0avgtext+0avgdata 57032704maxresident)k
0inputs+0outputs (0major+3720minor)pagefaults 0swaps
Хаксель компилировался командой
ghc first.hs -rtsopts
Почему такая адская разница?