2の電源とビット単位のAND& - 効率

時代の元学生、ちょうどライン上の機能を完了するために、製品の特殊な性質のために会社を、入力した後、私たちは非常に効率的に検討する必要があるが、いくつかの戦略を(この記事は定期的に更新されていない)が見つかりました:
ハッシュ%の長さは==ハッシュ・(長さ1)但し、2のn乗の長さ
Bは、%B == A&(B-1)を有する、場合に2のn乗満足します
I操作、機会の高効率要件よりも高い効率を求めている後者は、後者(私の現在の二つの主要なシナリオ、ハッシュバケットとリングキュー)を使用することをお勧めします。
Bが2のときn乗成立したとき、(A + B-1)および(〜(B-1))が2のn乗の結果となり、そしてAが後方に延長され、すなわち結果が発現よりも大きいです値に等しいが、2のn乗ことを保証することです。これにより、我々は(これは主にmallocメモリを開くために使用されている)場合は特に、動的データ構造(ring_buff、ring_queue)、malloc関数の効率を向上させることができます。

 

おすすめ

転載: www.cnblogs.com/yangguang-it/p/11613999.html