LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

А где тут multiple, если у тебя функция с одним аргументом? Вообще typecase даёт возможность сделать диспетчеризацию по типам, а использование inline (никогда особо её не использовал, поэтому не посоветую, в каких случаях можно гарантировать её применение), или, ещё лучше, использование макросов, позволяют сократить число вызовов функций. В SBCL компилятор будет использовать инфу о типе, известную в момент вызова, и выбрасывать заведомо ненужное. Но проверяется это в любом случае с помощью disassemble. В CLOS обычно всё медленно. Можно поизвращаться с метаобъектным протоколом и выжать больше скорости из CLOS, я читал какие-то статьи на эту тему, но сам бы так делать не стал.

Исправление den73, :

А где тут multiple, если у тебя функция с одним аргументом? Вообще typecase даёт возможность сделать диспетчеризацию по типам, а использование inline (никогда особо её не использовал, поэтому не посоветую, в каких случаях можно гарантировать её применение), или, ещё лучше, использование макросов, позволяют сократить число вызовов функций. В SBCL компилятор будет использовать инфу о типе, известную в момент вызова, и выбрасывать заведомо ненужное. Но проверяется это в любом случае с помощью disassemble. В CLOS обычно всё медленно. Можно поизвращаться с метаобъектным протоколом и выжать больше скорости, я читал какие-то статьи на эту тему, но сам бы так делать не стал.

Исходная версия den73, :

А где тут multiple, если у тебя функция с одним аргументом? Вообще typecase даёт возможность сделать диспетчеризацию по типам, а использование inline (никогда особо её не использовал, поэтому не посоветую, в каких случаях можно гарантировать её применение), или, ещё лучше, использование макросов, позволяют сократить число вызовов функций. В SBCL компилятор будет использовать инфу о типе, известную в момент вызова, и выбрасывать заведомо ненужное. Но проверяется это в любом случае с помощью disassemble.