‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

Category:
Реализовал "оптимизацию хвостовой рекурсии" в самом простом виде. Работает так: если функция "видит", что она вызывает самоё себя, то новый вложенный контекст не создаётся и пересчитанные значения аргументов перезаписываются на текущий уровень. Сэкономило заметное количество malloc/free. Чтобы механизм сработал как надо, "сам себе вызов" не должен быть вложен в какие-то другие вызовы. Но, разумеется, это не TR в чистом виде: вложенные вызовы сишных функций всё равно есть, от этого никак пока не избавиться, потому что это всё равно CALL, а не JUMP.


Думаю сейчас, что надо избавиться от указателя-"ссылки". Механизм сам по себе хороший, но неудобный в том плане что порождает лишние сущности: дальнейшее совершенствование упирается в запутанную сложность этой системы. Надо упрощать!
Tags: uncommon lisp
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 18 comments