|
> 「全般的な設定 - 送受信 - リモートメール」の「通常の受信時に一覧を更新し
>ない+終了時に一覧を消去」をONにすると高速になると思います。これをONしてど
>うか試してみて欲しいです。
>
> それでもやはり何秒か固まるようでしたら、別スレッド化をトライしてみよかう
>なぁと思いますけども。
>
設定してみましたが、残念ながら殆ど速度に違いはありませんでした。
「固まる時間」を 「Window に SendMessage して返ってこない時間」と定義し、
3回 受信を繰り返した平均フリーズ時間は、設定前は 4325ms、 設定後は 4313ms で
した。
別スレッド化を検討いただけると、うれしいです。
> あと、UIDLの比較の処理については、秀丸メールのデータ用フォルダの配下にあ
>るアカウント用フォルダ配下にUIDL.binってファイルの中に、実際のUIDL文字列が
>入ってるんですが、たぶんその文字列でテストするともっと時間がかかるんじゃな
>いかと思います。
>
> 秀丸メール内部では、文字列の比較はなるべく減らして、いわゆるハッシュ値を
>使って比較をするような処理をしています。
>
UIDL.bin の中身は受信順によってある程度きれいに並んでいるせいか、ランダムな
数値と比べると 2〜3割 早かったです。
> 処理時間の大半がソート部分なのと、たまたまメールサーバがソートした状態で U
>IDL を返してきていたので
>
この検証を実行した時は、秀丸は x86, 検証コードは x64 で動かしていたため、か
なり不公平な結果でした。
このため、
* 両方 x86 に揃える
* 「固まる時間」を 「Window に SendMessage して返ってこない時間」と定義
* 検証コードは https://ideone.com/ksLHPF の list1, list2 変数を シャッフルし
ていない UIDL.bin と メールサーバ の UIDL コマンドで取得したもの
として調査したところ、
検証コード: 1725ms
固まる時間: 4323ms
約2.5分の1 程度ので、「数分の1 〜 数十分の1」というのは事実ではありません
でした。申し訳ありません…
ここを早くしても、そんなにメリットは大きくなさそうです。
文字列をハッシュにして差集合を取得して、差集合の文字列を導出するうまいロジッ
クがすぐに思いつかなかったので、文字列そのまま使って比較してこの速度になりま
した。
ハッシュ値を使って比較すれば、確かにもっと早いかもしれません。。。
|
|