More Related Content
Similar to mruby for embedded systems (20)
More from masayoshi takahashi (20)
mruby for embedded systems
- 4. mrubyとは
●
軽量Ruby
●
平成22年度地域イノベーショ
ン創出研究開発事業「軽量
Rubyを用いた組込みプラッ
トフォームの研究・開発」の
成果
●
ささださんが作ってない方の
Ruby
- 8. mrubyの課題
●
意外にでかい(当社比)
●
特に実行時の動的メモリ確保がでか
い
●
数MBくらいのメモリ環境を想定し
ているらしい(まつもとさん談)
●
起動だけで30KB超える
●
100KBくらいでも動かすのがしん
どそう
- 10. 対策
●
ハッシュ(khash.h)を使わないよ
うにする
– シンボル管理で名前↔数値の対応
付けに使われているデータ構造を
ただの配列にする
– 遅い、けど小さくなる
- 11. 対策
●
ハッシュ(khash.h)を使わないよ
うにする
– 内部でインスタンス変数、メソッ
ド定義に使われているデータ構造
をセグメントリストに置き換える
(PyMiteのパクリ)
– 遅い、けど小さくなる
- 12. 対策
●
parserとcodegenを捨てる
– VM+ライブラリのみ
– あらかじめバイトコードコンパイ
ルしたRubyスクリプトを実行
– evalとかダメゼッタイ
- 13. 対策
●
初期化時のメモリ確保をケチる
– 足りなくなったら後で確保するら
しい
– ついでにシンボルの上限も300
個にする(あふれたら終了)
- 14. 対策
●
Ruby標準クラスを捨てる
– 試してみたけどいろいろ不具合が
起きやすいのでだいたい戻した
– Hash、Range、Struct、Ti
me、Math、Regexpがない
(Struct、Time、Math、Re
gexpはマクロでオフにする設定
がある)
- 15. 実装
●
コードはGitHubに上がってます
https://github.com/yurie/mruby/tree/lessmemory
– コミットログが日本語ですみませ
ん…