終了が遅い件#2

1855 letters | 562 views | コメントする

今日は二日酔いみたいで、書いてることがいつも以上にとりとめないが。



真魚は使用するほどメモリーがどうにかなるのではないかという説はとりあえず消えた。
真魚を起動→Delphiを起動して何か作業する→真魚を終了、と言う作業を行ってわかったのだが、
単に起動して終了するだけだと遅くならないが、その間にDelphiの起動を挟むと遅くなるのだ。
何度もやってみたがバッチリそういうことのようだ。
普段から終了が遅いと感じていたけど、起動したまま他のことをしてるとそうなるらしい。

Delphiって書いたけど今使ってるのはBDS 2006で、これは当たり前に数百MBとかメモリー使う。
普通の使用でも数百メガだが、時としてギガ単位で要求することもあり、
スワップが終わるまで数分、ハードディスクのランプを見つめて待つことはしばしばある。
うちのPCにインストールされたソフトの中では、一番メモリーを使うソフトと言うことになる。
と言うことはやはり、真魚を起動したあとにDelphiを起動すると、
Delphiを快適に動かすために、真魚の使用領域はいずこかへ追いやられるのだろう。
そして制御が帰ってきてから行う真魚の終了処理は時間がかかってしまうと言うことらしい。
あたしゃPC起動してすぐ、使わなくても真魚を起動し、終了せずに放置するので、
その間に別のことをしないわけにはいかないし、あきらめるしかないなと悟った。

ただし無視できないのは、その追いやられて復帰したあとの、どんな終了処理で遅いのかだ。
終了させようと、×ボタンを押すと、タブは瞬時に全て閉じられ、
タブがない、グレー表示の状態で待たされるわけだから、そのグレーの間に何をしているのか。
実は不可欠ながらあまりよくないことを一つやっていたのだ。
それは拡張子hisの設定ファイルのクリーンナップだ。
現在真魚の設定は、iniファイルとhisファイルに分けて、本体と同一フォルダに置かれる。
最初の頃はずっと、iniファイルだけでやって来たのだが、
テキストファイルごとにどの行を見ていたか保存したり、しおりを保存したりするために、
iniファイルとは分けて、それらの情報をhisファイルで保存するという変更を行った。

最近使ったファイルの履歴とかは、あまり何十個も保っても仕方ないわけだから、
はじめから数の限界値を決めて、iniファイルにはコンパクトに保存される。
しかし、しおりとかの情報は、最近使ってなかったファイルでも永久に保持したいわけで、
hisファイルの情報は無限に肥大化していくことになる。
でも本当に無限なのも困るので、既にないファイルの情報は削除している。
さて、このhisファイルに書かれた情報の内、消しても良い情報のチェックをいつ行うか。
今使ってる真魚のhisファイルを見てみたら、既に千行以上書き込まれていた。
つまり少なくとも数百個ものファイルを、HDDに存在してるか再チェックしているわけね。
そんな大仕事をいつやらせるかと言えば、起動時はあまり仕事させたくないので、
やっぱり終了時にやらせて、終了が遅いことはあきらめるのが妥当なんだろう。

しかし不思議なのは、起動してすぐ終了する場合はそんな大仕事も一瞬だということ。
起動して、別のソフトで別の作業をして、戻ってきて終了する場合だけ遅い。
動作はわけわからないけど、現象はわかったし回避のしようもないので、
せめてその、hisファイルのチェックを行う前の時点で姿だけは消そうかと。
よくある、起動処理に時間のかかるソフトで、タイトルロゴだけ先に表示する手法と同じで、
真魚は終了処理に時間のかかるケースがあるから、終了処理前に見かけだけ終了させる。

たぶん関連のある記事:

コメントは終了しています。