pphantom: (Default)
pphantom ([personal profile] pphantom) wrote2012-02-01 02:10 am

Пролог и длинная арифметика

Интереса ради попробовал соорудить параллелизацию на Прологе (точнее, на SWI Prolog), и в результате обнаружил забавное явление.

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

Теперь сижу и думаю - с чего бы это...

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting