昨日プログレスバーを実装してみてはっきりわかったことは、同じファイル名で内容の異なるものが大量にあると、等比級数的に実行速度が落ちてゆくということだ。つまり最初はプログレスバーがどんどん動いていくのに、100%に近づくにしたがって遅くなる。 アルゴリズム上そうなることはわかっていたのだが、これまではどの程度遅くなっているのかがはっきりわからない状態だったので、まあこんなもんでしょとか思っていたのに、その遅さがプログレスバーの動きによって白日の下にさらされてしまったわけだ。こんなに遅いんじゃ改善しないわけにいかんだろ、というわけで渋々着手。(T_T) とりあえず原因ははっきりしているので対処方法もすぐに思いついて、さっさと実装できたわけだが、この新アルゴリズムは 「同じ名前で内容の異なるファイルが数種類だけで大量にある場合は、劇的に速くなる。(300秒が20秒まで短縮)」が、 「同じ名前で内容の異なるファイルが何百種類もある場合は、今までより遅くなるかも。」 という弱点もある。でも後者のような場合はあまりないからいいよね。(-_-; あと、iiyamaさんにご指摘いただいた「移動先の容量がいっぱいになるとファイルが消える」件は、確かにそんな現象が起こりそうな気がするけど、まともにチェックしようとすると劇的にスピードが落ちる(^_^;と思うのでどうしようかというところだったのだが、WIN32APIにまかせればなんとかなるんちゃうかという気がするのでちょっと調べてみるっす。 |