Ruby 2.0.0 はロード時間に大きな違いをもたらしました。解釈された Ruby コード データを c-extension 経由でキャッシュすることで、読み込み時間をさらに短縮できないかと考えていました。つるはしセクション「Rubyインタープリターの埋め込み」を読んでいるときに、このアイデアが思い浮かびました。これは、キャッシング疑似コードが追加されたスニペットです。
#include "ruby.h"
main() {
/* ... our own application stuff ... */
ruby_init();
ruby_script("embedded");
/* HERE IS THE PSEUDOCODE FOR CACHING */
if (ruby_file_previously_loaded_and_cached())
load_marshalled_ruby_data();
else
rb_load_file("start.rb");
cache_all_the_ruby_data();
end
while (1) {
if (need_to_do_ruby) {
ruby_run();
}
/* ... run our app stuff */
}
}
このようなことは可能ですか?