静的解析によるメソッド探索の高速化
スポンサーリンク
概要
- 論文の詳細を見る
効率のよいオブジェクト指向言語の実装のためには、メソッド探索を高速化することが重要である。このために種々のメソッド・キャッシュ法が提案されてきた。ルックアップ・キャッシュやインライン・キャッシュは市販のSmalltalk処理系などで実際に使われている。キャッシュ法が改善されるにしたがって、キャッシュがミスしたときのオーバーヘッドがメソッド探索の性能に与える影響が大きくなってきている。したがってキャッシュがミスした場合のメソッド探索も高速化しなければシステム全体の性能は向上しない。プログラムの静的解析によってメソッド探索を高速化する手法としてタイプ推論を用いる方法やディスパッチ表を用いる方法が提案されている。タイプ推論は時間がかかることが問題で、高速化の追求は行なわれているものの、コンパイルの1フェーズとなるほどに実用的な時間では実行できない。ディスパッチ表は可能なクラスとセレクタの組み合わせに対して予めメソッドを計算して表に保存しておくものであるが、単純な実装では表が巨大になる。現在では表の充填率を100%近くに圧縮する方法が開発されているが、Smalltalkなどでは実用化されるほどには小さくならない。また2つの値を元にして表を引くことと、圧縮した場合にはセレクタ正当性のチェックが必要になることから、ある程度以上の高速化は望めない。本稿ではプログラムの静的解析によるメソッド探索を高速でかつ実用的なものにする手法について考察する。
- 一般社団法人情報処理学会の論文
- 1996-03-06
著者
関連論文
- OLTPのための自動グループコミット手法の提案(ストレージ 並列分散データベース,データ工学論文)
- 時間/機能制約による仕様に対する実行可能なUML/SysMLモデルの動的検査手法
- ストリーム・コンピューティング時代を開く基盤ソフトウェアIBM InfoSphere Streams (特集 BAO--未来を開く高度なインテリジェンス)
- 浮動小数点演算の正確さに関する投機を用いたJavaの数値計算の高速化
- RTOSシミュレーションのための性能と移植性が高いスケジューラ(開発環境,組込みシステム工学)
- 時間/機能制約による仕様に対する実行可能なUML/SysMLモデルの動的検査手法
- スクリプト言語コンパイラのための評価による最適化
- 動的スクリプト言語処理系が動作するJava仮想マシンのメモリ分析
- 再現コンパイル手法を用いたJava JITコンパイラの問題判別
- 非対称なスピンロックの提案とそのJavaへの応用
- スレッド局所性を利用したJavaロックの高速化
- 不完全なソースコードからのプログラム情報の抽出
- B-017 時間制約を持つ仕様に対するUML/SysMLモデルの動的検査手法(B分野:ソフトウェア,一般論文)
- JNI プログラム中のバグ発見
- Java Just-In-Timeコンパイラにおける最適化とその評価
- 第1回プログラミングおよび応用のシステムに関するワークショップ(SPA '98)の報告
- オブジェクト指向言語におけるメッセージ送信の高速化技法
- 静的解析によるメソッド探索の高速化
- メソッドの仮翻訳によるオブジェクト指向言語の最適化
- OOPSLA'94参加報告
- 5. 保守的ごみ集め (<特集> ごみ集めの基礎と最近の動向)
- C ベースのオブジェクト指向言語における再コンパイル時間の短縮
- オブジェクト指向データベースにおけるC++プログラム情報の表現と蓄積
- Tools Pacific '90に参加して
- オブジェクト指向言語COB : インプリメンテーション
- オブジェクト指向言語CDB : 設計方針と言語仕様
- 90-4 C++の多重継承
- オブジェクト指向ソフトウエア開発におけるプログラム理解支援
- オブジェクト指向ソフトウエア開発におけるプログラム理解支援
- モバイルユーザに状況適応型サービスを提供するしくみ
- 状況に適合するサービスをモバイル・ユーザに提供するシステム
- C++プログラム・データベース構築
- 拡張可能なC++ソースコード・ブラウザ : プログラム・データベース
- オブジェクト指向ソフトウエアの保守・再利用を支援するエディタ
- ロック制御型同期複製ミドルウェアの提案(分散データベース,データ工学論文)
- オブジェクト指向フレームワークによる異なるシステム間での表現変換(2)実現
- オブジェクト指向フレームワークによる異なるシステム間での表現変換(1)分析
- 分散オブジェクトに基づくアプリケーションの実行制御
- 高可用キー・バリュー ストアにおけるデータ鮮度に基づいた一貫性の提案とその実装
- 並列・分散プログラミング言語X10によるHPCアプリケーションの記述