17.1 Производительность байт-скомпилированного кода

Байт-скомпилированная функция не так эффективна, как примитивная функция, написанная на C, но работает намного быстрее, чем версия, написанная на Lisp. Вот пример:

(defun silly-loop (n)
  "Возвращает время, в секундах, необходимое для выполнения N итераций цикла."
  (let ((t1 (float-time)))
    (while (> (setq n (1- n)) 0))
    (- (float-time) t1)))
⇒ silly-loop

(silly-loop 50000000)
⇒ 5.200886011123657

(byte-compile 'silly-loop)
⇒ [Скомпилированный код не показан]

(silly-loop 50000000)
⇒ 0.6239290237426758

В этом примере интерпретируемый код потребовал более 5 секунд для выполнения, в то время как байт-скомпилированный код потребовал менее 1 секунды. Эти результаты являются репрезентативными, но фактические результаты могут отличаться.