フォルダが多いと時間がかかるNo.00936
水銀灯 さん 17/01/30 15:35
 
いつもお世話になっております。

フォルダが多くなると動作が固まってしまうという症状ですが
何年か前にも改善していただいてSSD環境では我慢できたのですが
HDD環境に戻ったらかなり時間がかかるようになってしまいました。
そこで何とか改善お願いできると助かります。

メールをする相手毎にフォルダを作成して過去メールを保存しているため
受信フォルダ数は7000くらいありまして、ツリーを開いたりフォルダ内を
見る時は以前の改良により速くなりました。

まだ固まる症状が出るのは、
・次の未読にジャンプしようとするとき
・フォルダ名をリネームするとき
同一アカウント内だけでなく他アカウントでも上記処理で固まります。

ステータスバーには、
◆--メール一覧/フォルダツリーの正当性チェックを完了しています。--
と表示されております。

バージョンは、6.62 / 32bitです。

よろしくお願いいたします。

[ ]
RE:00936 フォルダが多いと時間がかかるNo.00938
秀まるお2 さん 17/01/30 17:16
 
 まいどどうもです。

 その「メール一覧/フォルダツリーの正当性チェックを完了しています」が出
てるということで調べてみたら、それが出てる時は、アカウント配下にある
フォルダすべてについてのメール一覧キャッシュを全部ロードする処理が働いて
るようです。

> ・次の未読にジャンプしようとするとき

 こちらでテストした限りは、「下の未読メール」のコマンドではその処理は働
かないようではありました。

> ・フォルダ名をリネームするとき
> 同一アカウント内だけでなく他アカウントでも上記処理で固まります。

 たしかに、フォルダ名の変更とかアカウント名の変更の時はその処理が働くよ
うです。

 とりあえず、フォルダ名を変更しようとする時に限っては、変更対象の
フォルダに関係するフォルダについてのみ、メール一覧キャッシュのロードを優
先して処理するようにして高速化は可能だと思います。

 「下の未読メール」の時には、少なくとも「正当性チェックを完了・・」の表
示は出ないと思うのですが、未読メールを探すために、未読が見つかるまでずっ
とフォルダをスキャンしていくので、それで遅いってことはありえる気がします。

--------------------------------------------
 対応策ですが・・・

 まず1つ、「全般的な設定・上級者向け・デバッグ・デバッグ2」

  □ 未知のフォルダが発生してるかどうか探す処理を抑止する

 ってオプションがあって、これをONにすると、フォルダが多い場合の動作が多
少高速になります。それを1つ試してみて欲しいのと・・・

 さらに、上記のオプションと似たオプションで、

  □ メール用ファイルの書き換わりチェックを抑止する

 みたいなオプションを追加して、それをONにしたら、メール用ファイルが外部
によって(秀丸メール以外の何らかの方法で)書き換えられてないかどうかの
チェックを抑止して高速化するって対応ならしてもいいかなぁと思います。

 そういうのでどうでしょうか。

 現状、フォルダが多数あった時に遅いのは、それそれのフォルダ中のファイル
をすべてスキャンして、ファイルのタイムスタンプが書き換わってないか
チェックして、もし書き換わってる場合はメール一覧をもう一度作成しなおすっ
て処理をしてるせいでして、これを省略すれば、2倍くらいは高速になりそうな
気がします。

 とりあえずそのオプション追加のつもりでいじってみます。

[ ]
RE:00938 フォルダが多いと時間がかかるNo.00939
水銀灯 さん 17/01/30 18:40
 
ありがとうございます。

□ 未知のフォルダが発生してるかどうか探す処理を抑止する

ONにしたら次の未読に行くのが速くなりました。

[ ]
RE:00939 フォルダが多いと時間がかかるNo.00943
秀まるお2 さん 17/01/31 10:16
 
 「メール用ファイルの書き換わりチェックを抑止する」のオプション追加と、
さらに、「未知のフォルダが発生してるかどうか探す処理を抑止する」が仮に
OFFでも、フォルダ名変更とかのタイミングで待たされてる時に、Escキーを押す
ことで、その処理(未知のフォルダをスキャンする処理)を中断できるようにだ
けしてみます。

[ ]
RE:00943 フォルダが多いと時間がかかるNo.00953
秀まるお2 さん 17/01/31 22:33
 
 今まだいじってる最中なんですが、フォルダを大量に作成して、その「メール
一覧/フォルダツリーの正当性チェックを完了しています。」が20秒くらいか
かる状況を作って、何が遅いのか調べるなどしています。

 手元のバージョンで、とりあえず20秒が3秒にまで縮まった所です。

 オプション追加は、とりあえずやめようかと思ってる所です。「未知の
フォルダが発生してるかどうか探す処理を抑止する」もOFFでそれなりに高速に
なるようにしようと思います。

 テストも含めてもうちょっと時間かかりそうですが、次のβ版では高速になる
と思うので、少々お待ちください。

[ ]
RE:00939 フォルダが多いと時間がかかるNo.00964
水銀灯 さん 17/02/02 02:39
 
>ONにしたら次の未読に行くのが速くなりました。

すみません、訂正します。ONにしても固まりました。

速くなったのはキャッシュのせいでした。
再起動したら時間がかかっております。

[ ]
RE:00953 フォルダが多いと時間がかかるNo.01033
水銀灯 さん 17/02/12 09:39
 
hmmail664b3_signed.exe で試しました。

「下の未読メール」では待たされることはなくなりました。
フォルダ名の変更をすると、固まりました。

「未知のフォルダが発生してるかどうか探す処理を抑止する」をONにしても、フォル
ダ名変更では待たされるようです。

よろしくお願いいたします。

[ ]
RE:01033 フォルダが多いと時間がかかるNo.01036
秀まるお2 さん 17/02/13 10:44
 
 改めて動作確認してみたら、すみませんがあんまり速くなってませんでした。

 フォルダ一覧を表示した後の、遅延して実行する、各フォルダ毎のメール数を
取得する処理は高速化したんですが、フォルダ名変更の時はそれも効いてません
でした。

 別の作戦でフォルダ名変更でも速くなるように工夫してみます。次のβ版で速
くなる予定ということで、また確認お願いします。

[ ]
RE:01036 フォルダが多いと時間がかかるNo.01066
水銀灯 さん 17/02/17 00:58
 
hmmail664b5_signed.exe で試しました。

素晴らしいです。
・フォルダ名変更が速くなりました。(^^)
・上/下の未読メールも速くなりました。(^^)

欲を言えば、次のケースで固まりますが致命的ではありません。

アカウント1(未読あり)
アカウント2
アカウント3(フォルダが多い)
アカウント4(未読あり)

アカウント3を選択し、アカウント2を選択します。
上の未読でアカウント1へはすぐジャンプしますが
下の未読でアカウント4へジャンプしようとすると
アカウント3の処理中を跨ぐためか固まります。

お忙しいところ対応ありがとうございました。

[ ]
RE:01066 フォルダが多いと時間がかかるNo.01067
秀まるお2 さん 17/02/17 13:23
 
> アカウント1(未読あり)
> アカウント2
> アカウント3(フォルダが多い)
> アカウント4(未読あり)
>
> アカウント3を選択し、アカウント2を選択します。
> 上の未読でアカウント1へはすぐジャンプしますが
> 下の未読でアカウント4へジャンプしようとすると
> アカウント3の処理中を跨ぐためか固まります。

 アカウント3を一度も展開してない状態であれば、アカウント2から
アカウント4へジャンプするのは高速なんですが・・・、アカウント2を一度展
開すると、折りたたんでも遅いようでした。

 これのテストをしてたら1つバグを見つけてしまいました。アカウント3にも
しも未読メールがあると、アカウントを展開した段階で1回アカウントが太字じ
ゃなくて、すぐ(未読メールを見つける前に)折りたたむと、そのタイミングで
はアカウントが細字になってしまうようです。これはバグということで修正させ
ていただきます。

 さらには、一度展開しても、折りたたんでれば高速になるようにも修正しよう
と思います。

[ ]