21 #include <glog/logging.h> 26 std::random_device
rd;
33 size_t size =
sizeof(
T) * 6.9;
37 std::mt19937 gen(
rd());
40 max = (
T(1) << (size - 1)) - 1;
41 min = -(
T(1) << (size - 1));
43 max = (
T(1) <<
size) - 1;
48 std::uniform_int_distribution<T> dis(min, max);
49 for (
size_t i = 0;
i <
k; ++
i) {
54 for (
size_t i = 0;
i < n; ++
i) {
56 size_t drop =
i %
size;
58 reinterpret_cast<T*>(
buffer.data()),
61 values[
i % k] >> drop);
77 std::atomic<int64_t>
sum(0);
81 size_t size =
sizeof(
T) * 6.9;
82 for (
size_t i = 0;
i < n; ++
i) {
84 size_t drop =
i %
size;
86 reinterpret_cast<T*>(
buffer.data()), bit, size - drop);
99 ============================================================================
100 folly/experimental/
test/BitsBenchmark.cpp relative
time/iter iters/
s 101 ============================================================================
108 ----------------------------------------------------------------------------
115 ============================================================================
119 gflags::ParseCommandLineFlags(&argc, &argv,
true);
std::vector< uint8_t > buffer(kBufferSize+16)
std::atomic< int64_t > sum(0)
static void set(T *p, size_t bit)
static UnderlyingType get(const T *p, size_t bitStart, size_t count)
void benchmarkSet(size_t n, T)
#define BENCHMARK_SUSPEND
#define BENCHMARK_RELATIVE_NAMED_PARAM(name, param_name,...)
—— Concurrent Priority Queue Implementation ——
constexpr auto size(C const &c) -> decltype(c.size())
int main(int argc, char *argv[])
#define BENCHMARK_NAMED_PARAM(name, param_name,...)
void benchmarkGet(size_t n, T x)
constexpr unsigned int findLastSet(T const v)
static const char *const value
std::chrono::nanoseconds time()
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
std::vector< int > values(1'000)