Профилировщик выполнения SICStus Prolog 4.5.1 сообщил мне следующее:
| ?- print_profile. insns try/retry called name ---------------------------------------------------------------- ... ---------------------------------------------------------------- 1769156/8845768 prolog:evaluate/2 7076612/8845768 prolog:evaluate2/2 76073600 7076616 8845768 prolog:evaluate2/2 7076612/8845768 prolog:evaluate2/2 ---------------------------------------------------------------- ...
Из любопытства: что такое evaluate2/2
и как узнать, в каких частях кода Пролога он вызывается?
(Я предполагаю, что evaluate/2
и evaluate2/2
оценивают арифметические выражения, которые все еще изменяются, когда некоторые (is)/2
цели скомпилированы ...)