Feb 01, 2012 02:10
Интереса ради попробовал соорудить параллелизацию на Прологе (точнее, на SWI Prolog), и в результате обнаружил забавное явление.
В эту реализацию "от рождения" встроена длинная арифметика, поэтому один из механизмов (мьютексы) я попробовал потестировать на программе вычисления факториала (простой, насколько это возможно). В итоге обнаружилось, что получившаяся поделка работает, мягко говоря, существенно быстрее, чем другие реализации того же, оказавшиеся под руками (Maxima и C/C++ с GMP). А именно:
1) SWI Prolog систематически обгоняет GMP (неважно, C или C++) в два раза. При включении распараллеливания (и там, и там) коэффициент растет и доходит примерно до 3.
2) Maxima проигрывает SWI в несколько десятков раз (но уже факториал миллиона считать попросту отказывается).
Теперь сижу и думаю - с чего бы это...
it,
числодробилки