2010年04月30日

LatexBoxの高速化

 あまりに動作が遅いため、LatexBox2eの高速化を行うことにしました。
 まずはどこで時間が消費されているかを調べました。

1. platexによる.texから.dviへの変換
2. .dviの解析
3. 解析結果からPowerPoint上に図式を構築

 処理時間の大半を段階3で消費していました。段階3をもう少し詳しく調べてみました。

3-1. テキストボックス挿入
3-2. テキストボックスのプロパティの変更
3-2-1. テキスト変更
3-2-2. フォント指定
3-2-3. 表示位置変更
3-2-4. フォントサイズ指定
3-2-n. ...
3-3. 図式が完成していなければ3-1に戻る

 PowerPointが内部でどうやって処理をしているかは知りませんが、どうやら3-2でテキストボックスのプロパティを変更するたびに、PowerPointが何か少し重い処理(処理X)を行っているようです。このプロパティを変更するたび、というのが厄介で、テキストの変更をする->処理X、フォントの指定をする->処理X、表示位置変更->処理X、というように、大量の処理Xが行われているようです。結果として、大量の処理Xによって実行速度が低下しているようでした。
 多分処理Xはオートコレクトとかスペルチェックとかの類だとおもいます。これらの処理を一時的に切る方法を探しましたが、特にこれといった方法は見つかりませんでした。
 もしくはテキストボックスはimmutableで、プロパティの変更のたびに実は新しいテキストボックスを作成しているのかもしれません。でもそうだとすれば、C#でいうstringに対するStringBuilderのようなものがあってもいい気がする。
 
 とりあえず今回は、テキストボックスのプロパティ変更回数をできる限り減らす、という解決策をとりました。テキストボックスの複製(duplicate)には時間はほとんど消費しないので、共通のプロパティを設定したひな形となるテキストボックスを1つ作成しておき、それを複製し、個別に設定が必要なプロパティのみを変更するようにしました。それだけで5倍から10倍程度高速化ができました。
posted by Tanaka at 00:02| Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2010年04月11日

バグ・要望報告用エントリ

バグ・要望など
私も気がついたことをレスしていきます。
posted by Tanaka at 12:53| Comment(10) | 開発 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。