Article freyasx/79 of [1-110] on the server localhost:119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A77@freyasx.ML_>]
Newsgroups: mail-lists.freyasx

[FreyaSX] FreyaSX-0.99.15 リリース (移植性関連バグフィックス)
17 Jan 2006 06:51:24 GMT ysato@delegate.org (Yutaka Sato)
The DeleGate Project


FreyaSX-0.99.15 をリリースしました。

 ・FreyaSX の VC++ Ver.5 でのコンパイルに対応
 ・findex 索引作成進行状況の(64bits整数値)データ表示の修正
  ・off_t が 32ビットのマシンに対応
  ・VC++ 用に %lld を %I64 に変換
 ・findex 索引作成時の、ハッシュ関数切り替え基準の変更
 ・fsearch.cgi 検索時の index=i1&index=i2 ... でのコアダンプを修正
 ・DeleGate の C での(非C++での)コンパイルに対応
 ・any2fdif/DeleGate の、DNS環境が無い状態での起動の遅延を除去
 ・any2fdif/DeleGate でのメールアドレス匿名化を解除

FreyaSX での索引作成時、findex ではハッシュ関数として、初期状態では
elfhash を使っていますが、元データの性質によっては衝突率が非常に高く
なって、再ハッシュを延々と繰り返すようになり、処理がひどく遅くなると
いうか実質上使用不可になってしまう場合があります。

そこで、衝突率が高い状況を検出すると、elfhash をやめて、安定して
衝突率の低い CRC32 に切り替えるようにしています。CRC32 の計算は
elfhash より重いので、衝突率が低い状態で CRC32 を使うと、全体の処理
速度を若干遅くしますので、このような初期状態と切り替えを行うように
なっています。

今回、衝突率がそれほどでもないと思っていた場合(100%以下)でも、処理
速度が劇的に低下してしまう例がありましたので、この切り替えの基準を
変更しました。具体的には「ハッシュ表の占有率が50%以上の状況で、衝突
回数がアクセス回数の25%を超えた場合に、CRC32への切り替えを行う」と
いうのを追加しました。

                   D G  
┌─┐┬┌──┬┐ //\^^ ( - ); {Do the more with the less -- B. Fuller}
├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
┴ └┴──┘┴──────────────────────────────
佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V