proxygen
detail Namespace Reference

Classes

struct  FNV64
 
struct  SpookyHashV2
 

Functions

std::vector< uint8_trandomBytes (size_t n)
 
template<class Hasher >
void bmHasher (Hasher hasher, size_t k, size_t iters)
 
template<class Hasher >
void addHashBenchmark (const std::string &name)
 
template<typename T >
Tget_pointer (const unique_ptr< T > &ptr)
 
template<typename T >
Tget_pointer (T *ptr)
 

Variables

std::vector< uint8_tbenchData = randomBytes(1 << 20)
 

Function Documentation

template<class Hasher >
void detail::addHashBenchmark ( const std::string name)

Definition at line 56 of file HashBenchmark.cpp.

References folly::addBenchmark(), bmHasher(), i, k, and folly::sformat().

56  {
57  static std::deque<std::string> names;
58 
59  for (size_t i = 0; i < 16; ++i) {
60  auto k = size_t(1) << i;
61  names.emplace_back(folly::sformat("{}: k=2^{}", name, i));
62  folly::addBenchmark(__FILE__, names.back().c_str(), [=](unsigned iters) {
63  Hasher hasher;
64  bmHasher(hasher, k, iters);
65  return iters;
66  });
67  }
68 
69  /* Draw line. */
70  folly::addBenchmark(__FILE__, "-", []() { return 0; });
71 }
std::string sformat(StringPiece fmt, Args &&...args)
Definition: Format.h:280
void bmHasher(Hasher hasher, size_t k, size_t iters)
const char * name
Definition: http_parser.c:437
std::enable_if< boost::function_types::function_arity< decltype(&Lambda::operator())>::value==2 >::type addBenchmark(const char *file, const char *name, Lambda &&lambda)
Definition: Benchmark.h:172
KeyT k
template<class Hasher >
void detail::bmHasher ( Hasher  hasher,
size_t  k,
size_t  iters 
)

Definition at line 45 of file HashBenchmark.cpp.

References folly::doNotOptimizeAway(), i, and k.

Referenced by addHashBenchmark().

45  {
46  CHECK_LE(k, benchData.size());
47  for (size_t i = 0, pos = 0; i < iters; ++i, ++pos) {
48  if (pos == benchData.size() - k + 1) {
49  pos = 0;
50  }
51  folly::doNotOptimizeAway(hasher(benchData.data() + pos, k));
52  }
53 }
std::vector< uint8_t > benchData
KeyT k
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
template<typename T >
T* detail::get_pointer ( const unique_ptr< T > &  ptr)

Definition at line 29 of file GenericFilterTest.cpp.

Referenced by GenericFilterTest< Owned >::addFilterToChain().

29  {
30  return ptr.get();
31 }
template<typename T >
T* detail::get_pointer ( T ptr)

Definition at line 34 of file GenericFilterTest.cpp.

References ptr.

34  {
35  return ptr;
36 }
void * ptr
std::vector<uint8_t> detail::randomBytes ( size_t  n)

Definition at line 34 of file HashBenchmark.cpp.

References dist, and rng.

34  {
35  std::vector<uint8_t> ret(n);
36  std::default_random_engine rng(1729); // Deterministic seed.
37  std::uniform_int_distribution<uint16_t> dist(0, 255);
38  std::generate(ret.begin(), ret.end(), [&]() { return dist(rng); });
39  return ret;
40 }
auto rng
Definition: CollectTest.cpp:31
std::uniform_int_distribution< milliseconds::rep > dist

Variable Documentation

std::vector<uint8_t> detail::benchData = randomBytes(1 << 20)

Definition at line 42 of file HashBenchmark.cpp.