Производительность байткодированного кода
Байткодированная функция не так эффективна, как примитивная функция, написанная на C, но работает намного быстрее, чем версия, написанная на Lisp. Вот пример:
(defun silly-loop (n)
"Return the time, in seconds, to run N iterations of a loop."
(let ((t1 (float-time)))
(while (> (setq n (1- n)) 0))
(- (float-time) t1)))
⇒ silly-loop
(silly-loop 50000000) ⇒ 10.235304117202759
(byte-compile 'silly-loop)
⇒ [Compiled code not shown]
(silly-loop 50000000) ⇒ 3.705854892730713
В этом примере интерпретированный код потребовал 10 секунд для выполнения, в то время как байткодированный код потребовал менее 4 секунд. Эти результаты характерны, но фактические результаты могут отличаться.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Speed-of-Byte_002dCode.html