03.06.2013 Views

高 速 な RUBY 用 仮 想 マシン の 開 発

高 速 な RUBY 用 仮 想 マシン の 開 発

高 速 な RUBY 用 仮 想 マシン の 開 発

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

20<br />

最適化:特化命令<br />

問題:メソッド呼び出し<strong>の</strong>オーバヘッドが特に大き<strong>な</strong>処理<br />

「メソッド呼び出し<strong>の</strong>オーバヘッド」>>「処理<strong>の</strong>オーバヘッド」<br />

Integer#+ <strong>な</strong>ど<strong>の</strong>数値計算<br />

解決:特定<strong>の</strong>メソッド呼び出しパターンを特化命令へ置換<br />

特定 selector、特定<strong>の</strong>引数<strong>の</strong>数<strong>の</strong>メソッド呼び出しを置換<br />

例)a + b<br />

send :+,1 → opt_plus<br />

型(クラス)<strong>の</strong>チェック<br />

動的特性を満たすため,再定義<strong>の</strong>チェック<br />

Python では<br />

チェックし<strong>な</strong>い<br />

opt_plus:<br />

if(a と b は整数?)<br />

if 整数について<strong>の</strong> + メソッドは再定義されてい<strong>な</strong>いか?<br />

return a+b<br />

else return 通常<strong>の</strong>メソッド呼び出し(a.+(b))

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!