REALbasicとの久しぶりの格闘

ここのところ、REALbasicでいろいろと作業を行っていた。はるかかなた昔に本を書いたときにも、それほどRbについては詳しいわけではなかったし、行き帰りの電車の中で解説書を眺めていたぐらいだったのだが、割と作るものは作れた。

もっとも、仕様書のデータから直接REALbasicのコードを生成させたり、AppleScriptでREALbasicをコントロールして、コードエディタ上での作業効率を向上させたり、と細かいツールを地道に作っては実戦投入していたりした。

だが、納得できないことは山のようにあった。

 「えー、RbのNthFieldってこんなに遅かったの??」

Excelからシミュレーションデータを読み取って(この部分はAppleScript)、Rbの処理ルーチンのパラメータとして設定して動作確認を行っていたのだが、このデータ読み取りにえっらく時間がかかるのだ。

分析のため、処理ルーチンごとにLEDインジケータもどき表示するコードを付加して、どのルーチンで時間がかかっているかを観察してみたところ……AppleScriptの処理部分は考えられるかぎりすべてのレベルの最適化を施しておいたため、まさに一瞬で処理が終わるのだが、大半はRbの処理ルーチンで消費していることが分かった。

それほど難しい処理を行っているわけではなかったのだが、コンパイラのくせにインタプリタのAppleScriptよりも感覚的に「遅い」というのは納得できかねた。

いろいろと相談してみたところ、NthFieldについてはプラグインで高速処理が行えるとのことであり……置き換えたところ10倍以上にまで処理速度が向上した。それでも、AppleScriptで記述してもさほど時間は変わらないような気もしなくもない。
あとは、DateクラスのTotalSecondsプロパティを取得しても毎回同じ値が返ってくるというのはどういうことなんだろうか(ーー;; これが正常に動作していないとなると、作れないものが山のように出てきてしまうのだが……。

Copyright By Piyomaru Software. All Rights Reserved