Rubyの文字列処理の手軽な高速化
スポンサーリンク
概要
- 論文の詳細を見る
本発表では Ruby 処理系の正規表現などの文字列処理を手軽に高速化する手法について述べる.高速化を目指すにあたり,文字列処理のアルゴリズムに手を加えず,互換性を損なわない範囲で行うことができる 2 つの手軽な手法を適用した.1 つ目に,正規表現エンジン鬼車用の AOT コンパイラを実装した.Ruby の正規表現処理を行う正規表現エンジン鬼車は,仮想マシン型の評価器を持ち,実行時に正規表現をオペコードに変換して評価する.我々は正規表現処理の高速化を目指し,このオペコード列をC言語の関数に変換し,仮想マシンの代わりに動作させる AOT コンパイラを開発した.2 つ目に,主要な文字コードについて,文字コードに関する処理を文字列処理へインライン化した.鬼車は多言語文字列に対応した正規表現エンジンである.多言語文字列に対応するために,文字のバイト数を調べるといった各文字コード固有の処理を関数ポインタによって呼び分けている.また,この仕組みを利用して,Ruby 処理系の文字列も多言語化が行われている.しかし,各文字コード固有の処理を関数ポインタ経由で呼び出すため,関数呼び出しにコストがかかり,また C コンパイラによる関数をまたいだ最適化が効きにくくなるという問題があった.そこで,我々は主要な文字コードについて,文字コードに関する処理を文字列操作にインライン化することで高速化を実現した.本発表では,鬼車用 AOT コンパイラの仕組みと文字コードに関する処理のインライン化の手法について述べる.そして評価を行い,これらの高速化の結果について述べる.
- 2011-09-22
著者
-
笹田 耕一
東京大学大学院情報理工学系研究科
-
笹田 耕一
東京農工大学大学院工学府
-
笹田 耕一
東京大学:(現)東京大学大学院情報理工学系研究科創造情報学専攻
-
笹田 耕一
東京大学大学院 情報理工学系研究科
-
中川 博貴
東京大学大学院情報理工学系研究科
関連論文
- WebVDIのためのVNC Proxy(OS-4:仮想化,2008年並列/分散/協調処理に関する『佐賀』サマー・ワークショップ(SWoPP佐賀2008))
- SMTプロセッサにおけるスレッドスケジューラの開発(マルチスレッド)
- SMTプロセッサにおける再構成可能キャッシュモデルとFPGAによる実装
- FPGAを用いたSMTプロセッサの実現と再構成可能キャッシュメモリの検討(設計手法と高性能化, リコンフィギャラブルシステム, 一般)
- SMTプロセッサにおける同期方式の検討(プロセッサ技術(1), 「ハイパフォーマンスコンピューティングとアーキテクチャの評価」に関する北海道ワークショップ(HOKKE-2005))
- SMTプロセッサにおける細粒度最適化手法の検討(ARC-3 : プロセッサアーキテクチャIII)(2004年並列/分散/協調処理に関する『青森』サマー・ワークショップ(SWoPP青森2004) : 研究会・連続同時開催)
- SMTプロセッサにおける物理レジスタバンクの動的割当て
- SMTプロセッサにおけるスレッドスケジューラの開発(スレッド・プロセス)
- マルチスレッドアーキテクチャ向けOS「Future」におけるプロセス管理
- マルチスレッドアーキテクチャにおけるスレッドライブラリの実装と評価(プロセッサアーキテクチャ)
- SMTプロセッサにおけるアウトオブオーダ実行に必要なリソースの共有方式の評価(ARC-1:プロセッサ)(2003年並列/分散/協調処理に関する『松江』サマー・ワークショップ(SWoPP松江2003))
- スレッド管理機構を用いたオンチップマルチスレッドのためのキャッシュメモリシステム
- ヘテロジニアスマルチプロセッサのためのタスク分散手法(ARC-2:マルチコア1,2008年並列/分散/協調処理に関する『佐賀』サマー・ワークショップ(SWoPP佐賀2008))
- 高速なRuby用仮想マシンの開発(研究会推薦博士論文速報)
- マルチスレッドアーキテクチャOChiMuS PE向けシステムソフトウェアにおけるスレッド固有メモリの管理方式(システムプログラム)
- Rubyのメモリ管理の改善
- スケーラビリティとユーザビリティに優れた分散ファイルシステム向けのアクセス制御機構(データアクセス・移動体,インターネットセキュリティ,一般)
- Feature-Packingのためのソフトウェアによるメモリ管理手法の検討(Inventive and Creative Architecture特別セッションII)
- メニーコアプロセッサ時代を拓くシステムソフトウェアへの挑戦(セッション4:マルチコア向けシステムソフトウェア)
- Ricsin: Ruby に C を埋め込むシステム
- Mieruシステムソフトウェア
- KVMを利用した異種ホストOS間上でのライブマイグレーション
- RubyによるOS構成法の提案とその実行基盤の試作
- RubyによるOS構成法の提案とその実行基盤の試作
- Ruby用仮想マシンにおけるAOTコンパイラ
- Mieruシステムソフトウェア
- Ruby 処理系へのスナップショット GC の実装
- スケーラビリティとユーザビリティに優れた分散ファイルシステム向けのアクセス制御機構(データアクセス・移動体,インターネットセキュリティ,一般)
- SMTプロセッサ向けキャッシュメモリリプレース方式(プロセッサアーキテクチャ)
- マルチスレッドプロセッサにおける再構成可能キャッシュメモリ
- FPGAにおけるSMTプロセッサの実装モデル
- SMTプロセッサ向けの軽量な同期機構(プロセッサアーキテクチャ)
- Feature-Packingのためのソフトウェアによるメモリ管理手法の実装と評価
- Feature-Packingのためのソフトウェアによるメモリ管理手法の実装と評価
- メニーコア向けタスクスケジューリングシステムの検討
- 軽量なプロセスマイグレーションを可能とするフレームワーク
- KVMを利用した異種ホストOS間上でのライブマイグレーシヨン
- atomic-Ruby:世界でたった 1 つだけの Ruby
- VMMでWebVDIを実現するシステムの実装と評価
- Mieru システムソフトウェア
- Mieru システムソフトウェア
- Feature-Packing のためのソフトウェアによるメモリ管理手法の実装と評価
- SMTプロセッサにおける同期方式の検討(プロセッサ技術(1), 「ハイパフォーマンスコンピューティングとアーキテクチャの評価」に関する北海道ワークショップ(HOKKE-2005))
- yass: yet another simple storage
- Ruby用仮想マシンYARVにおける並列実行スレッドの実装
- オブジェクト指向スクリプト言語 Ruby
- 高度なIT人材を育成するITスクールの実施例(2004年度東京会場)
- Ruby用仮想マシンYARVの実装と評価
- LLVMを用いたオブジェクトファイルの細分化
- Development of a Thread Scheduler for SMT Processor Architecture
- 論理スレッド番号により管理されるキャッシュを持つマルチスレッドプロセッサの性能評価
- 論理スレッド番号により管理されるキャッシュを持つマルチスレッドプロセッサの性能評価
- Rubyの文字列処理の手軽な高速化
- 実用的なRuby用AOTコンパイラ
- Ruby用リアルタイムプロファイラの設計と実装
- 未踏ユースから育ったタレントたち【PART 1 若い未踏クリエータからのメッセージ】:8.Rubyで広がる世界
- オブジェクトファイルの細分化機構と応用
- オブジェクトファイルの細分化機構と応用
- CastOff : Ruby用コンパイラのライブラリとしての実装 (プログラミング Vol.5 No.3)
- オブジェクトファイルの細分化機構と応用(組込みシステムソフトウェア,組込み技術とネットワークに関するワークショップETNET2012)
- オブジェクトファイルの細分化機構と応用(組込みシステムソフトウェア,組込み技術とネットワークに関するワークショップETNET2012)
- (第43回)オブジェクト指向スクリプト言語Ruby(私の研究開発ツール)