高 速 な RUBY 用 仮 想 マシン の 開 発
高 速 な RUBY 用 仮 想 マシン の 開 発
高 速 な RUBY 用 仮 想 マシン の 開 発
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))