เป€เบŸเบชเบšเบธเบเป€เบ›เบตเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ F14 hash

เบšเปเบฅเบดเบชเบฑเบ”เป€เบŸเบชเบšเบธเบ เบ›เบฐโ€‹เบเบฒเบ” เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash F14, เป€เบซเบกเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. F14 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป€เบŸเบชเบšเบธเบเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบชเบเบชเบฐเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. F14 เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบ”เบตเบเบงเปˆเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เบ‚เบญเบ‡ google::sparse_hash_map, เป€เบŠเบดเปˆเบ‡เบกเบฒเบฎเบญเบ”เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เบตเป‰เบ–เบทเบงเปˆเบฒเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเบณ. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ C ++ เปเบฅเบฐเบ–เบทเบเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” เป‚เบ‡เปˆ.

F14 เปเบฒเบเป€เบ–เบดเบ‡เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบกเบตเบฅเบฐเบšเบปเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบ›เบฐเบ—เบฐเบเบฑเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบเบปเบ”เบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบเบฑเบš 14. เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡ (เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบญเบ‡ 14 เบŠเปˆเบญเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ•เบฒเบฅเบฒเบ‡ hash เบ”เบฝเบง, เปเบฅเบฐเป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบŠเบฅเบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ hash auxiliary). เป€เบžเบทเปˆเบญเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เป€เบŠเบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ vector SSE2 เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš x86_64 เปเบฅเบฐ NEON เบชเปเบฒเบฅเบฑเบš Aarch64, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ‚เบฐเบซเบ™เบฒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบทเบญเบเบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบ—เบตเปˆเบกเบตเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบฅเบฐ sifting เบญเบญเบเบ„เบตเบžเบฒเบเปƒเบ™เบ•เปˆเบญเบ‡เป‚เบชเป‰. เบ•เบฑเบ™เบ‚เบญเบ‡ 14 เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบ™เป€เบงเบฅเบฒ, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบปเบกเบ”เบธเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบเบฑเบ™.

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบžเบดเป€เบชเบ”เบ‚เบญเบ‡ F14 เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™:

  • F14NodeMap - เปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฐเปเบˆเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบเบฒเบ‡. เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เป‚เบ”เบเบ—เบฒเบ‡เบญเป‰เบญเบกเบ”เป‰เบงเบเบเบฒเบ™เป‚เบ—เบซเบฒ malloc เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบฒเบ™เปเบŠเบ;
  • F14ValueMap - เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฐเปเบˆเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เป€เบŠเบฅเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡ (เปƒเบ™เปเบ–เบง). เบชเปเบฒเบฅเบฑเบšเบเบฐเปเบˆเบ‚เบฐเบซเบ™เบฒเบ”เบเบฒเบ‡เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ overhead เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™;
  • F14VectorMap - เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบเบฐเปเบˆเบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™, เปเบ•เปˆเบŠเป‰เบฒเบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ„เบตเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ–เบทเบเบšเบฑเบ™เบˆเบธเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบญเบฒเป€เบฃเบ—เบตเปˆเบกเบตเบ›เบฐเบŠเบฒเบเบญเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เปเบฅเบฐเปเบเป‰เป„เบ‚เป‚เบ”เบเบ•เบปเบงเบŠเบตเป‰เบ”เบฑเบ”เบชเบฐเบ™เบต 32-bit;
  • F14FastMap เปเบกเปˆเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบฅเบงเบก. เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 24 bytes, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบทเบญเบ F14ValueMap, เปเบฅเบฐเบ–เป‰เบฒเบซเบผเบฒเบ, F14VectorMap เบ–เบทเบเป€เบฅเบทเบญเบ.

เป€เบŸเบชเบšเบธเบเป€เบ›เบตเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ F14 hash

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™