要望:From検索の高速化No.02147
CHERRYVOICE さん 09/07/15 23:30
 
From検索、もうちょっと早くならないでしょうか?

かなり前にも似たような要望を出したことがあるのですが、最近
検索フォルダを多用するようになり、改めて検索の遅さを感じる
ことが多くなったので、改めて要望させてください。


現状の秀丸メールはSubject検索が飛び抜けて早く、その他の検索は
とても遅いという印象です。
本文検索よりは、メールアドレス検索の方が早いのかもしれませんが、
体感的には大して変わりません(少なくとも私の使い方では)。

これは、Subject検索は(概ね)list.binを調べるだけで良いのに
対し、その他の検索はメールデータ(*.txt)を見に行く(可能性がある)
から、と認識しています。


以前要望した際には、
・メールアドレス検索は16bit CRCを使ってlist.binを検索する
・ヒットしたらメールデータを読み込んで正確な検索をする
・ToやCcが3つ以上ある場合は初めからメールデータを検索する
とお聞きしました。

そのため、ToやCcが3つ以上あったり、ヒットするメールが大量に
ある場合は、メールデータを見に行くことになるため、検索が遅い
という話でした。


しかし、Fromアドレスならば通常は1つしかないし、list.binの中に
CRCだけではないアドレス情報を保持しているように見えるので、
list.binを調べるだけでFrom検索できるのでは?と思います。

Subject検索とそれ以外では、速度が数十倍も違います。
「検索条件がFrom:のみである」という場合の例外処理になって
しまうかもしれませんが、From検索だけでもSubject検索並に早く
ならないか?と期待しております。

よろしくお願いします。

[ ]
RE:02147 要望:From検索の高速化No.02148
Iranoan さん 09/07/16 00:25
 
 CHERRYVOICE さん今日は、Iranoan です。
> From検索、もうちょっと早くならないでしょうか?
 検索が速くなるのは大歓迎なので、その点に関しては秀まるおさんにお任せ
するとして、
> Subject検索とそれ以外では、速度が数十倍も違います。
とはなりませんでした。むしろ From の方が速いぐらいでした。
 もちろん Subject の検索と、From の検索でヒットする個数が違うので、単
純な比較は出来ませんが。

 対象が「(メールアドレス検索)」になっていない、という事は無いでしょう
し、なぜ Subject の検索のほうが速いのだろう???
> ・メールアドレス検索は16bit CRCを使ってlist.binを検索する
によって、ヒット件数が同じなら、「メールアドレス検索」の方が速いだろうに。

> しかし、Fromアドレスならば通常は1つしかないし、list.binの中に
> CRCだけではないアドレス情報を保持しているように見えるので、
> list.binを調べるだけでFrom検索できるのでは?と思います。
 おそらく、From アドレスだからといって、他の To, Cc 等のアドレス検索
と処理は変わらないのでしょうね。
 ## From が一つに限られるなら良いのですが、イレギュラーなメールは必ず
存在するし...。

 そこで、Subject/From の検索で、CHERRYVOICE さんと私で結果が違う事は
別として、「Fromアドレスならば通常は1つしかない」という前提に立つなら、
「おおざっぱな検索」を ON にしてはどうでしょう。

[ ]
RE:02148 要望:From検索の高速化No.02149
CHERRYVOICE さん 09/07/16 00:43
 
> 対象が「(メールアドレス検索)」になっていない、という事は無いでしょう
>し、なぜ Subject の検索のほうが速いのだろう???
>> ・メールアドレス検索は16bit CRCを使ってlist.binを検索する
>によって、ヒット件数が同じなら、「メールアドレス検索」の方が速いだろうに。

Subject検索は、256byteまでlist.binに情報を持っているので、256byte以内
ならlist.binの解析だけで済む、という話が以前ありました。
ほとんどの場合はlist.binだけで済むSubject検索に対して、ヒット数が
数百件、数千件にもなるFrom検索では、圧倒的にSubject検索が早くなるのは
妥当な結果だと思います。

> そこで、Subject/From の検索で、CHERRYVOICE さんと私で結果が違う事は
>別として、「Fromアドレスならば通常は1つしかない」という前提に立つなら、
>「おおざっぱな検索」を ON にしてはどうでしょう。

この設定は知りませんでした。
これはまさしく、検索時にlist.binだけしか見ないという設定っぽいですね。
特に動作が重いのは職場の環境なので、明日試してみます。

有用な情報ありがとうございました。

[ ]
RE:02149 要望:From検索の高速化No.02150
秀まるお さん 09/07/16 09:26
 
 From:ヘッダのみを対象として検索するのであれば、おおざっぱ検索はONでも
OFFでも関係無くて、最高に高速に動作するはずだと思います。

 ちなみに僕のマシンを紹介させていただくと、

 CPU: AthlonXP 1250MHz (AthlonXP 2000+をFSB100MHzにクロックダウン)
 メモリ: SDRAMで512Mバイト
 OS: WindowsXP SP3
 HD: メール用のは2.5インチ60Gバイト4200rpm、IDE接続タイプ。
 ビデオカード: RADEON 7000のPCIカード版
 その他:  デスクトップテーマはクラシックタイプで、効果類はすべてOFF

 です。このマシンで、メインで使ってるアカウントの中にメールが約16万通
ありまして、それをFrom:対象のみでメールアドレス検索すると…

 まったくヒットしないでたらめメールアドレスの場合で、1回目が約3秒、2
回目は0.8秒程度でした。16万通から検索して1秒かからないということで、
僕としては超高速だと思います。

 遅くなる例としては、とにかくヒットしまくるようなメールアドレスを指定す
ると遅くなります。例えば自分自身のメールアドレスをFrom:ヘッダから検索す
ると、自分が送信したメールがヒットしてしまうために、約2万7千通がヒット
します。それでかかった時間が、1回目が約20秒、2回目が約3秒くらいでし
た。

 ちなみに秀丸メールはV5.20β5でした。

[ ]
RE:02150 要望:From検索の高速化No.02151
CHERRYVOICE さん 09/07/16 10:18
 
秀まるおさんのご指摘通り、おおざっぱ検索の有無で結果は
変わりませんでした。
私が多用するFrom検索は、ヒットするメールが多いので遅いです。

PCのスペックは、Pen4-3.4GHz、メモリ1GB、HDD 7200rpmです。
この環境で、50000件程度のメールから800件程度ヒットする
検索を実施して、
・Fromメールアドレス検索:30秒程度
・Subject検索:1秒以下
という結果でした。

Subject検索は、5000件以上ヒットするような条件でも3秒程度で
検索が完了します。
いずれもPC再起動直後に計測した値です。

From検索もSubject検索並に早くならないでしょうか?

[ ]
RE:02151 要望:From検索の高速化No.02152
秀まるお さん 09/07/16 10:47
 
 僕の非力なマシンよりも少し遅いようなので、一回ハードディスクの最適化
(デフラグ)をするといいかもしれませんが…

 秀丸メールの方で、実はこういう「たくさんヒットしてしまう場合」でも高速
化するネタはあります。例えば受信系のメールであれば、From:ヘッダ中のメー
ルアドレスは、list.bin上にキャッシュされてます。なのでそこだけ見て判断可
能です。

 "From:"を対象とした検索の場合で、しかも受信系メールにヒットした場合に
限って高速化することになりますけど。

 ちょっといじってみます。

[ ]
RE:02152 要望:From検索の高速化No.02153
CHERRYVOICE さん 09/07/16 10:59
 
> 僕の非力なマシンよりも少し遅いようなので、一回ハードディスクの最適化
>(デフラグ)をするといいかもしれませんが…

こちらで計測した値は、最適化直後のものです。
ヒットするメールは50000通の中にまんべんなく存在するため、複数のメール
データを見に行かなければならず、それで遅いんだと思います。
(メールデータのファイルサイズは添付ファイル抜きで200MB超程度です)

> 秀丸メールの方で、実はこういう「たくさんヒットしてしまう場合」でも高速
>化するネタはあります。例えば受信系のメールであれば、From:ヘッダ中のメー
>ルアドレスは、list.bin上にキャッシュされてます。なのでそこだけ見て判断可
>能です。
>
> "From:"を対象とした検索の場合で、しかも受信系メールにヒットした場合に
>限って高速化することになりますけど。

やはりlist.binだけで完結できるのですね!
From検索するのは受信メールだけなので、この実装で十分です。
実現されれば劇的な高速化になりそうなので、期待しています。

よろしくお願いします。

[ ]
RE:02153 要望:From検索の高速化No.02154
CHERRYVOICE さん 09/07/16 11:04
 
ちなみにこの高速化案は、メールアドレス検索だけでなく、通常の
検索一覧作成におけるFrom検索でも可能でしょうか?

メールアドレス全体が正確に分からない場合、通常の検索一覧作成で
From検索するケースも良くあります。
Fromアドレスがlist.binにキャッシュされているなら、こちらも
同様に高速化できるのでは?と思います。

ご検討頂ければ幸いです。

[ ]
RE:02154 要望:From検索の高速化No.02155
秀まるお さん 09/07/16 11:20
 
 メールアドレス検索の時にしか高速化出来ないです。なぜかというと…

 list.binにキャッシュしてるFrom:内容は、From:ヘッダの文字列をそのまま覚
えているのではなくて、メール一覧に表示する名前とメールアドレスに分解した
文字列になっているからです。

 例えば

 From: あああ <aaa> いいい

 のようなヘッダがあるとすると、

 "あああ"という文字列と"aaa"という文字列の2つを覚えるだけです。

 From: aaa (あああ)

 となってる場合もまったく同じキャッシュのされ方になります。

 なので、From:ヘッダに対して文字列検索させるのには使えないです。

 しいて高速化するとしたら、検索対象の分類の1つとして、「From:のメール
アドレス文字列および名前文字列」というのでも追加して、それを選択した場合
は、みたいな感じにするしかありませんけど、一般ユーザーさんには大変わかり
にくいので、そこまでするのはどうかと思います。

[ ]
RE:02150 要望:From検索の高速化No.02156
ぱと さん 09/07/16 11:29
 
秀まるお さん

秀丸メールユーザーのぱとと申します。

> From:ヘッダのみを対象として検索するのであれば、おおざっぱ検索はONでも
>OFFでも関係無くて、最高に高速に動作するはずだと思います。

この秀まるおさんの環境での検索速度のお話を伺ってショックを受けております。
というのは、私の環境では、メールアドレス検索は通常の検索よりは早いけど、こ
こまで高速に動作するものであるという認識は無かったからです。

環境:Windows Xp Professional SP3 メモリ2G Pentium D 2.8G 秀丸メール 5.20β3

遅くなる原因としては、秀丸メールのホームディレクトリが、
サーバー上の共有フォルダにおいてあるとだろうと思います。
(Windows Server 2008 64bit版 メモリ 8G CPU Pentium Qore 2 Quad 2.83G

この環境で、メインアカウントの状況は以下のとおり

全ファイルサイズ 3365.4M
全メール数 427,430通
メール一覧のメモリ使用量 60.7M

この条件化で同じようなテストをしてみると以下の通りです。

全くヒットしないでたらめアドレスを メールアドレス検索で From 対象で指定(お
おざっぱ検索オフ)

一回目 20秒 二回目 3秒程度

自分のサブアドレスで結構ヒットする場合 (8,857通ヒット)
(上記テスト後にいったん、秀丸メールを再起動してからやりました。)

一回目 1分20秒 二回目は 50秒ほどでした。ただし、このテスト自体が二回目なの
ですが、最初にやった時は、一回目、二回目とも、2分以上かかっていましたので、
サーバー側の HDD のキャッシュの関係も影響するのかもしれません。

いずれにせよ、秀まるおさんの環境での、「2万7千通ヒットでも二回目なら3秒」に
は遠く及びません。一番の要因は、ホームディレクトリがサーバーの共有フォルダ
上にあることだなと考えられるわけですが、ここまで差が出るものだとは思ってい
ませんでした。

データはメールも含めて全てサーバー上に置くことでバックアップの管理などを楽
にすることを前提とした運用なので、極力クライアント機側にはデータは置きたく
ないのですが、ここまで差があるのなら、メールデータに限っては、クライアント
に置くことを考えた方がいいのかもしれません。

ただし、秀まるおさんの環境でのテストで二回目以降はいずれも瞬時になるってこ
とは、list.bin 相当のデータが秀丸メールでオンメモリの状態になるからってこと
ですよね? だとすると、ホームディレクトリがローカルにあるかサーバーにあるか
でここまで差が出るものなのでしょうか?フォルダ構成の問題なども絡むのでしょ
うかね?

----
ぱと

[ ]
RE:02155 要望:From検索の高速化No.02157
CHERRYVOICE さん 09/07/16 11:40
 
> list.binにキャッシュしてるFrom:内容は、From:ヘッダの文字列をそのまま覚
>えているのではなくて、メール一覧に表示する名前とメールアドレスに分解した
>文字列になっているからです。

名前単体、メールアドレス単体での検索ならこれでも問題ないのだけど、
"名前+メールアドレス"という文字列として検索されてしまうとうまくヒット
できなくなって困る、ということでしょうか。

"名前+メールアドレス"で検索するケースが果たしてどれだけあるのかは
疑問ですが、作者さんとしては可能性が0でない限り、こういうケースを除外
するわけにはいかない、というのは理解します。

> しいて高速化するとしたら、検索対象の分類の1つとして、「From:のメール
>アドレス文字列および名前文字列」というのでも追加して、それを選択した場合
>は、みたいな感じにするしかありませんけど、一般ユーザーさんには大変わかり
>にくいので、そこまでするのはどうかと思います。

確かにそうですね。

メールヘッダの規格がどうなっているかは詳しくないのですが、名前とアドレスを
区別するための記号の有無で、"名前+メールアドレス"で検索しているかどうか
判別できないでしょうか。

例えば、検索文字列に
・<  >
・(  )
・半角スペース
等を含まなければ、それは名前文字列もしくはメールアドレス文字列単体の
検索であると判断して、list.binのみの解析で済ます、とか。

[ ]
RE:02157 要望:From検索の高速化No.02158
秀まるお さん 09/07/16 13:48
 
 とりあえず、メールアドレス検索に関しては高速化出来ました。これからもう
ちょっとテストしてみます。

> メールヘッダの規格がどうなっているかは詳しくないのですが、名前とアドレスを
> 区別するための記号の有無で、"名前+メールアドレス"で検索しているかどうか
> 判別できないでしょうか。

 正規表現とかあいまい検索が関係すると無理があります。

 やるとしたら、やはり「対象(X):」の所に新しい対象を追加するしか無いと思
います。

 僕のアイデアとしては、「To/From列表示用のキャッシュ」って名前にすると
分かりやすいかなぁと思いますけど。

 何かいいアイデアがあればお願いします。

[ ]
RE:02158 要望:From検索の高速化No.02159
CHERRYVOICE さん 09/07/16 14:21
 
> とりあえず、メールアドレス検索に関しては高速化出来ました。これからもう
>ちょっとテストしてみます。

ありがとうございました。
対応早いですね。リリースを楽しみにしています。

> 正規表現とかあいまい検索が関係すると無理があります。

判断は難しくなると思いますが、出来ないことはないかと思っていました。

検索条件が、明白に名前文字列のみ、メールアドレス文字列のみ、と判断
出来る場合のみ高速化処理にする、という粗いふるいをかけても良いと思います。
極端な話、正規表現やあいまい検索は高速化対象外にしてしまうのも
アリかと思います。

> やるとしたら、やはり「対象(X):」の所に新しい対象を追加するしか無いと思
>います。
>
> 僕のアイデアとしては、「To/From列表示用のキャッシュ」って名前にすると
>分かりやすいかなぁと思いますけど。

「対象」の選択項目は現時点でかなり多いので、これ以上増えるのはあまり
歓迎しません。(高速化とどっちを取るかと言われたら、高速化なんですけど)

もし、「To/From列表示用のキャッシュ」という対象を用意したとして、
それをユーザーが選択した場合、検索文字列には名前文字列のみ、メールアドレス
文字列のみを入れると思います。
つまり、検索条件が、明白に名前文字列のみ、メールアドレス文字列のみ、と判断
出来るケースがほとんどではないかと思います。

なので、上記のように検索文字列から暗黙的に従来処理/高速化処理を切り替える
だけでも、多くの場合は高速化の恩恵にあずかれるのではないでしょうか。

[ ]
RE:02159 要望:From検索の高速化No.02160
秀まるお さん 09/07/16 14:41
 
 最初の話に戻りますが、例えば、

From: あああ <aaa> いいい

 と書いてあった場合には、メール一覧のキャッシュ上は"いいい"の文字列は完
全にカットされます。

 なので、そもそも「どういう文字を検索しようとしてるか」というのでキャッ
シュを使えるかどうか、という判断は不可能です。

 まぁ上記のようなへんなヘッダは普通見かけませんけど、実際にそういうヘッ
ダを生成するメールソフトがあって、そういう場合にも対応するような処理が
秀丸メール内に入っています。

 それに、具体的に高速化する場合はこうで高速化しない場合はこうだ、みたい
な仕組みがどうなってるのかややこしいと、それはそれでユーザーさんも分から
ないし、僕の方も、ユーザーさんから「なぜ高速化しないんだ」みたいな言い方
をされていちいちソースコード見直しながらテストしないといけない、なんてい
うのも大変です。というのもあります。

[ ]
RE:02160 要望:From検索の高速化No.02161
CHERRYVOICE さん 09/07/16 15:04
 
事情は理解しました。
これ以上引っ張っても秀まるおさんのお手数をおかけするだけのようですので、
あとの実装はお任せします。

検索の「対象」が増えても、高速化される方がうれしいです。

[ ]
RE:02161 要望:From検索の高速化No.02162
秀まるお さん 09/07/16 15:21
 
 では勝手ながら、「こういう使い方すれば絶対最高に高速に検索する」という
ことが保証出来る形ということで、「対象(X):」の所にもう1つ新しい対象を追
加するって作戦にしてしまいます。

 名前は、とりあえず「To/From列表示用のキャッシュ」で作ってみて、後でま
た見直します。

[ ]
RE:02162 要望:From検索の高速化No.02163
ぱと さん 09/07/16 15:30
 
秀まるお さん

秀丸メールユーザーのぱとと申します。

2156 で書いたことの要旨だけ再質問です。

ホームディレクトリがサーバーの共有フォルダに置かれている場合には、
私の環境で、メールアドレス検索でも一回目で1〜2分、二回目だとしても数十秒か
かっているのですがこれは「共有フォルダだから」という条件だけでありえること
なのでしょうか?他になんらかの理由がある可能性がありますか?

----
ぱと

[ ]
RE:02163 要望:From検索の高速化No.02164
Iranoan さん 09/07/16 16:14
 
 ぱとさん今日は、Iranoan です。
> 私の環境で、メールアドレス検索でも一回目で1〜2分、二回目だとしても数十秒か
> かっているのですがこれは「共有フォルダだから」という条件だけでありえること
> なのでしょうか?他になんらかの理由がある可能性がありますか?
 状況によりいくらでも有り得ると思います。パッと思いつくものとして、
・ウイルス・チェック等のセキュリティー関係ソフト
  →ウイルス・チェック・ソフトの設定で、メール・ファイル (標準では、
    *.txt) を除外できたら、速くなるかも
・検索対象となるメール・ファイルの数
  →極端な例として、「メールファイルの作成方法」が「1メール1ファイルと
    する」になっている
が有ります。

[ ]
RE:02164 要望:From検索の高速化No.02165
秀まるお さん 09/07/16 17:16
 
 ネットワークドライブだとたしかに内蔵ハードディスクよりは遅くなると思い
ます。

[ ]
RE:02164 要望:From検索の高速化No.02166
ぱと さん 09/07/16 17:52
 
Iranoan さん

秀丸メールユーザーのぱとと申します。

> 状況によりいくらでも有り得ると思います。パッと思いつくものとして、
>・ウイルス・チェック等のセキュリティー関係ソフト
>  →ウイルス・チェック・ソフトの設定で、メール・ファイル (標準では、
>    *.txt) を除外できたら、速くなるかも
>・検索対象となるメール・ファイルの数
>  →極端な例として、「メールファイルの作成方法」が「1メール1ファイルと
>    する」になっている
>が有ります。

1メール1ファイルは特別なフォルダ(情報アイテム用フォルダ)以外にはありません。
ウィルス対策ソフトは、Norton Internet Security をデフォルト設定(ただしスパ
ム対策はオフ)で使っているだけですが、これがこの件にそう影響するとも思えない
のですが。

秀まるおさんからは、「遅くなる」とコメントをいただいたので、一度ローカルフ
ォルダに環境をコピーしてみて検証します。「検索フォルダ」周りでの要望も、
「メールアドレス検索でもまだ遅いから」という観点からの要望だった部分もあり
ますので、ローカル環境にホームディレクトリを置けば「検索結果の保存」などが
未実装でも運用に問題ないということになるかもしれません。

----
ぱと

[ ]