3 ms·
It is not lock-free. Every time he reads he acquires a lock by calling epochs.lock(). That may not explain the numbers entirely, but this benchmark is completel
by NovaX 8y ago
It is not lock-free. Every time he reads he acquires a lock by calling epochs.lock(). That may not explain the numbers entirely, but this benchmark is completely bogus.
- the_mitsuhiko 8y ago> Every time he reads he acquires a lock by calling epochs.lock(). Where do you see this? I only see it lock on refresh.
- NovaX 8y agoThe benchmark allocates a new ReadHandle on every get(key) operation, whose constructor performs work under a shared lock. This is a design flaw of the benchmark, not the library.
- Jonhoo 8y agoI'm not sure where you get that from? The benchmark code clones one read handle for each read thread at the beginning, which is then used for the entire benchmark: https://github.com/jonhoo/rust-evmap/blob/d307999c1ad78d10ecb6ea911b6e94d36bc841ca/benchmark/src/main.rs#L142 https://github.com/jonhoo/rust-evmap/blob/d307999c1ad78d10ec...