  Recent decades have witnessed a surge in the development of concurrent data
structures with an increasing interest in data structures implementing
concurrent sets (CSets). Microbenchmarking tools are frequently utilized to
evaluate and compare the performance differences across concurrent data
structures. The underlying structure and design of the microbenchmarks
themselves can play a hidden but influential role in performance results.
However, the impact of microbenchmark design has not been well investigated. In
this work, we illustrate instances where concurrent data structure performance
results reported by a microbenchmark can vary 10-100x depending on the
microbenchmark implementation details. We investigate factors leading to
performance variance across three popular microbenchmarks and outline cases in
which flawed microbenchmark design can lead to an inversion of performance
results between two concurrent data structure implementations. We further
derive a set of recommendations for best practices in the design and usage of
concurrent data structure microbenchmarks and explore advanced features in the
Setbench microbenchmark.
