Spec-Zone.ru › Elisp

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

Байткодированная функция не так эффективна, как примитивная функция, написанная на 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API