著者
中川 博貴 笹田 耕一
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.4, no.4, pp.44-44, 2011-09-22

本発表では Ruby 処理系の正規表現などの文字列処理を手軽に高速化する手法について述べる.高速化を目指すにあたり,文字列処理のアルゴリズムに手を加えず,互換性を損なわない範囲で行うことができる 2 つの手軽な手法を適用した.1 つ目に,正規表現エンジン鬼車用の AOT コンパイラを実装した.Ruby の正規表現処理を行う正規表現エンジン鬼車は,仮想マシン型の評価器を持ち,実行時に正規表現をオペコードに変換して評価する.我々は正規表現処理の高速化を目指し,このオペコード列をC言語の関数に変換し,仮想マシンの代わりに動作させる AOT コンパイラを開発した.2 つ目に,主要な文字コードについて,文字コードに関する処理を文字列処理へインライン化した.鬼車は多言語文字列に対応した正規表現エンジンである.多言語文字列に対応するために,文字のバイト数を調べるといった各文字コード固有の処理を関数ポインタによって呼び分けている.また,この仕組みを利用して,Ruby 処理系の文字列も多言語化が行われている.しかし,各文字コード固有の処理を関数ポインタ経由で呼び出すため,関数呼び出しにコストがかかり,また C コンパイラによる関数をまたいだ最適化が効きにくくなるという問題があった.そこで,我々は主要な文字コードについて,文字コードに関する処理を文字列操作にインライン化することで高速化を実現した.本発表では,鬼車用 AOT コンパイラの仕組みと文字コードに関する処理のインライン化の手法について述べる.そして評価を行い,これらの高速化の結果について述べる.In this presentation, we describe the lightweight methods to speed up string processing for Ruby. To speed up, we adapt two lightweight methods which do not change string processing algorithms and do not break compatibility. First, we implemented the AOT compiler for regular expression engine Oniguruma which is used for regular expression processing in Ruby. Oniguruma is implemented as a virtual machine. The regular expression parser of Oniguruma compiles the regular expressions into a sequence of opecodes, and then the virtual machine executes it. We implemented the AOT compiler which compiles an opecode sequence into a C function, and then executes the C function instead of the execution of virtual machine. Second, we inlined processes of major character encodings into string functions. Oniguruma supports multilingual strings. To support multilingual strings, Oniguruma calls each character encoding functions, for example a function to calculate a byte length of a character, via a function pointer. Similarly, Ruby string is multilingualized in the same way as Oniguruma. However this approach increases the cost of function calls, and prevents a C compiler interprocedural optimization. For speed up, we inlined processes of major character encodings into string functions. In this presentation, we describe the design and the implementation of the AOT compiler for Oniguruma and the method to inline processes of character encodings. Moreover, we show the results of performance evaluation for these implementations.
著者
中川 博貴 笹田 耕一
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.5, no.4, pp.1-16, 2012-09-04

我々はオブジェクト指向スクリプト言語Rubyにおいて,マルチコアプロセッサによる並列プログラミングを効率的,かつユーザが扱いやすい形で実現することを目指し,Rubyオブジェクトのプロセス間転送・共有を行うTeleporterライブラリを開発した.既存のプロセス間通信機構でオブジェクトを転送するには,オブジェクトをバイナリ列に変換してから送信し,受信側でそれをオブジェクトに復元する必要があり,そのオーバヘッドが問題となっていた.そこでTeleporterでは通信路にプロセス間共有メモリを利用することで,オブジェクトを従来の機構よりも軽量なシリアライズ,もしくはシリアライズを行わずに転送するようにし,オーバヘッドの少ない通信を実現した.さらにプロセス間でRubyオブジェクトを安全に共有する仕組みについて設計し,実装を行った.Teleporterはユーザが手軽に利用できることを目指すため,Ruby処理系の改修を行わずにRubyの拡張ライブラリとして実装した.本稿では,開発したTeleporterの設計と実装,そしてAPIについて詳細に述べる.また,Teleporterを用いた評価結果を示し,その考察を示す.
著者
向井 陵一郎 奥野 浩和 中川 博貴
出版者
公益社団法人 日本理学療法士協会
雑誌
理学療法学Supplement
巻号頁・発行日
vol.46, pp.G-71_2-G-71_2, 2019

<p>[目的]</p><p>&nbsp;脳卒中患者の就労に関する問題点は、運動麻痺や高次脳機能障害などの機能障害に加え、通勤手段や職場環境、仕事内容など多岐にわたるため、就労の意思があっても実現できない場合が少なからず存在する。今回、右被殻出血により左片麻痺、半側空間無視を呈した症例に対し、長期に渡り訪問リハビリテーション(以下訪問リハ)を提供し、限定的ではあるが復職が可能となった症例を担当した。その経過について報告する。</p><p> [方法]</p><p> 症例は2014年11月に右被殻出血を発症し、開頭血腫除去術を施行。左片麻痺、半側空間無視を呈した50代の男性で職業は観光バスの運転手であった。2015年1月に急性期病院から回復期リハビリテーション病棟を有する当院に転院し同6月に退院。直後より当院による訪問リハが開始となった。開始当初の移動能力は、長下肢装具を利用しての自宅内T字杖歩行は見守りが必要で、屋外は車椅子介助であった。</p><p> [結果]</p><p> 1回40分の訪問リハを週3回34か月実施した。復職に必要な動作を調査したところ、自宅車庫までの歩行、屋外不整地歩行、自動車の運転が必要であった。これらの動作の自立を目的に神経筋再教育や立位荷重練習、屋外歩行練習、階段昇降練習を実施した。開始3か月後にはT字杖+短下肢装具(以下SLB)見守りとなったが開始9か月後も自立しなかった。そこで4点杖やロフストランド杖、松葉杖での歩行を評価し、最も安全性、安定性に改善がみられた松葉杖を使用することにした。開始11か月後から松葉杖+SLB歩行練習を開始し、開始19か月後には自立した。開始30か月後にはSLBなしでの歩行も自立した。また、松葉杖使用により立位可能時間が増加し、立位時に手掌で自重を支える必要もないため右上肢の自由度が増した。自動車の運転は開始時から自立していた。開始20か月後から職場での不整地歩行練習、トイレ動作練習を実施し複数回の練習の結果自立した。上記の動作は自立したが、観光バスの運転手復帰は困難であるため、病前の知識を活かし運行管理や社用車の車検取得、簡単な整備、必要書類の記入、提出などの業務を不定期ではあるが行っている。</p><p> [結論]</p><p> 本症例の復職には自宅内から車庫までの移動、屋外不整地歩行、自動車の運転自立が必要であった。これらの動作の自立には安定性、安全性の確保が重要であるが、残存能力を考慮するとT字杖の使用ではそれらが確保できなかった。そこで松葉杖を使用したところ安全性、安定性が大幅に改善し自立に至った。また、松葉杖の使用により立位可能時間が延長され、立位時に右上肢も使用できるようになったため役所等での書類の提出や立位での作業に有用となった。さらに、車の乗降、運転が自立したこと、職場が協力的だったこともあり復職がかなった。復職への課題は多岐に渡り短期間では解決できない点が多いため、長期的に訪問リハなどの支援を継続させることが重要だと思われた。</p><p>[倫理的配慮,説明と同意]</p><p>症例には本報告の目的、趣旨、個人情報の保護に関する説明を口頭と書面にて行い、本人の署名をもって同意を得た。</p>