スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

Emacs のバイトコンパイル

今回は Emacs のバイトコンパイルについてです。

バイトコンパイル

Emacs は内部にインタプリタ持つアプリケーションで、機能の大部分は emacs-lisp で定義されています。
Emacs ではそのインタプリタの読み込みを速くするために、emacs-lisp ファイルをバイトコンパイルすることができます。

ただ、勘違いされやすいのですが、バイトコンパイルは Emacs の Lisp インタプリタが読みやすいようにファイルを直して、ファイルのロードを速くするだけで、ファイル内に記述された関数などの実行速度が速くなるわけではありません

前に読んだ雑誌の Emacs の特集記事でさえ間違ったことが書かれていたことがありました。

Emacs は内部にインタプリタ持つアプリケーションなので、例えば C-n などを押した場合、そのつど C-n (next-line) の関数が定義されている部分を一行づつ読み込む。それを速くするためにバイトコンパイルを行う。


大昔の BASIC じゃあるまいし、今時そんなインタプリタあるわけないだろっと思いっきりツッコミをいれときました(心の中で)。
いまどきのインタプリタでは、ファイルを解析してロードすると関数などはメモリに読み込まれます。その関数を実行する際には、メモリ上の関数を呼び出すだけなので、この辺はコンパイルした実行ファイルでもインタプリタでも速度は大して変わりません。
本当はメモリ効率などのためにもっと複雑なことをしているみたいですが、すくなくとも関数呼び出しの度に毎回パースして読み取りながら、関数を実行することはないです。


実行方法

バイトコンパイルする方法は以下のコマンドを実行します。
M-x byte-compile-file
そうするとバイトコンパイルしたいファイルを聞かれるので、そこでバイトコンパイルしたい .el ファイルを指定します。
バイトコンパイルが成功すると .elc のファイルが作成されます。
foo.el -> foo.elc

ただし、.elc ファイルがあると .el よりも優先してロードされるため、 .el を直して .elc を作り直すのを忘れていると変更が反映されないので注意が必要です。


実行方法(コマンドラインから)

Makefile などでまとめて行いたい場合にはコマンドで実行することもできます。
$ emacs -batch -f batch-byte-compile 対象ファイル 

やさしいEmacs‐Lisp講座やさしいEmacs‐Lisp講座
(2011/06)
広瀬 雄二

商品詳細を見る

入門GNU Emacs (UNIX text processing)入門GNU Emacs (UNIX text processing)
(1999/09)
デボラ キャメロン、エリック レイモンド 他

商品詳細を見る

Rubyソースコード完全解説Rubyソースコード完全解説
(2002/12)
青木 峰郎

商品詳細を見る
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

No title

s/インタープリンタ/インタープリタ/g
または
s/インタープリンタ/インタプリタ/g
ですか?

修正しました

間違えてました。 Wikipedia にあわせて インタプリタ で修正しました。

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
28位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
4位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

07月 | 2017年08月 | 09月
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。