簡易データベースの並び替え…
仕事用に開発した自作の簡易データベース作成プログラムを大幅に改良しているのですが、それに付随して過去の簡易データベースの中身をひっくり返す必要があったため、そのサポートアプリを開発しました。一応、その記録です。
今回は何も難しい処理をしていません。単純に簡易データベースの並び替えを行っているだけです。簡易データベースの中身は、単なるテキストです。もともとは数多のテキストファイルだったのですが、それを1行=1ファイルとして1日毎に異なるタグで囲み、簡易XM風にまとめたものです。これを読み込んで検索アプリが動作しますので、検索速度向上のために並び替える必要があったのです。
ドラッグドロップで追加した簡易データベースファイルを開き、頭から順に呼び出して旧データベースが潜在的に抱えていたバグの回避処理を行った後、変数の頭に追加していくだけ。これにより、今までは古い順にならんでいたデータが新しい順に並びます。
ところが、途中でものすごく処理が遅くなるため、1年分のデータベースを5つに分割して処理を開始。合間にさらなる速度向上を図るためプログラムの見直しと書き換えを実施しました。
その中で分かったことは、HSは変数にデータを追加した際に動作低下を起こすのではないか、ということ。最初のプログラムでは1行づつ読み込んで別な変数に追加していく処理が300行くらいから徐々遅くなっていったのですが、読み込みだけであれば最初の速度を維持したまま処理が可能であることが分かったからです。また、処理の効率をアップさせるため、必要な行でのみバグ回避処理を行う仕様に変更(笑)しました。もちろん、一番の問題はマシンスペックにあるわけですが…。
次に、並び替えのデータをどうやって作るかですが、動作速度を落とさないため、単純に変数に加えている方法はやめます。そこで、メモリノートパッド命令によって先頭行に追加する方式を試してみます。
この方法だと、書き込みをしない時と速度が変わらないので劇的にプログラムが改善できますね。私的には、これがダメならばsotenote命令で並び替えることも検討し、実際に試してみて一瞬で処理ができることを確認していたのですが、そこまでやる必要もありませんでしたね。
ここまで完成したところで、通常の仕事を進めながら、バックグラウンドでデータベースの並び替え作業を進めました。今日は2008年からさかのぼり、2005年まで完了。明日も続きをやります。