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秒未満です。これは典型的な結果例ですが、実際の結果はさまざまでしょう。

This page has generated for branch:work/emacs-30_8ac894e2246f25d2a2a97d866b10e6e0b0fede5a, commit:b7b3c5b81a7a4eec61faa3ed3d7c731d52d3987b to check Japanese translation.