sapling/lib/radixbuf
Jun Wu 69a6c18747 indexedlog: normalize benchmarks to use 204800 entries
Summary:
This makes it easier to compare benchmark results between abstractions.

A sample of the result is listed below. Comparing to radixbuf, which is highly
optimized and less flexible, indexedlog is about 10x slower on insertion, and
about 3x slower on lookup.

indexedlog:

  index insertion (owned key)    90.201 ms
  index insertion (referred key) 81.567 ms
  index flush                    50.285 ms
  index lookup (memory)          25.201 ms
  index lookup (disk, no verify) 31.325 ms
  index lookup (disk, verified)  46.893 ms

  log insertion                  18.421 ms
  log insertion (no checksum)    12.106 ms
  log insertion with index      110.143 ms
  log flush                       8.783 ms
  log iteration (memory)          6.444 ms
  log iteration (disk)            6.719 ms

raidxbuf:

  index insertion                11.874 ms
  index lookup                    8.495 ms

Differential Revision: D14635330

fbshipit-source-id: 28b3f33b87f4e882cb3839c37a2a11b8ac80d3e9
2019-03-27 16:29:58 -07:00
..
benches indexedlog: normalize benchmarks to use 204800 entries 2019-03-27 16:29:58 -07:00
src radixbuf: add ignore marker to documentation blocks 2019-03-20 19:56:14 -07:00
Cargo.toml radixbuf: make it compile on windows 2019-02-22 10:22:30 -08:00
README.md fb-hgext: integrate rust libraries and extensions with setup.py 2018-01-08 15:26:24 -08:00

radixbuf

Radix tree based on plain buffers.

There are 2 plain buffers:

  • Radix buffer: One or more radix trees mapping keys to their IDs. Read and write by the library.
  • Key buffer: The source of truth of full keys. Read by the library, write by the application.

An ID of a key could be an offset, or other meaningful numbers understood by the function reading a key.