How to Select Superinstructions for Ruby
-
- Zakirov Salikh
- Department of Mathematical and Computing Sciences, Tokyo Institute of Technology
-
- Chiba Shigeru
- Department of Mathematical and Computing Sciences, Tokyo Institute of Technology
-
- Shibayama Etsuya
- Information Technology Center, The University of Tokyo
抄録
Superinstruction is well-known techniques of improving performance of interpreters. Superinstructions eliminate jumps between VM operations (interpreter dispatch) and enable more optimizations in merged code. In past, processors with simple BTB-based branch predictors had high misprediction rate when executing interpreted code, resulting in high overhead of interpreter dispatch, so superinstructions were used to reduce it. However, this assumption is incorrect for Ruby on current hardware. Accordingly, using superinstructions for eliminating jump instructions only marginally improves performance. In this paper, we consider applying superinstructions differently to improve performance of floating point computation. We note that high percentage of objects allocated during numeric computation are boxed floating point values, meanwhile garbage collection takes significant part of the execution time. Using superinstructions composed from pairs of arithmetic operations we were able to reduce allocation of boxed floats by up to 36%, and obtain improvement in performance of up to 22%.
収録刊行物
-
- Information and Media Technologies
-
Information and Media Technologies 5 (2), 519-526, 2010
Information and Media Technologies 編集運営会議
- Tweet
詳細情報 詳細情報について
-
- CRID
- 1390001205264909696
-
- NII論文ID
- 130000251510
-
- ISSN
- 18810896
-
- 本文言語コード
- en
-
- データソース種別
-
- JaLC
- CiNii Articles
-
- 抄録ライセンスフラグ
- 使用不可