proxygen
main.cpp File Reference

Go to the source code of this file.

Functions

 DECLARE_int32 (bm_max_iters)
 
 BENCHMARK (fn_invoke, iters)
 
 BENCHMARK (fn_ptr_invoke, iters)
 
 BENCHMARK (std_function_invoke, iters)
 
 BENCHMARK (Function_invoke, iters)
 
 BENCHMARK (mem_fn_invoke, iters)
 
 BENCHMARK (fn_ptr_invoke_through_inline, iters)
 
 BENCHMARK (lambda_invoke_fn, iters)
 
 BENCHMARK (lambda_noop, iters)
 
 BENCHMARK (lambda_local_var, iters)
 
 BENCHMARK (fn_ptr_invoke_through_template, iters)
 
 BENCHMARK (virtual_fn_invoke, iters)
 
 BENCHMARK (fn_ptr_create_invoke, iters)
 
 BENCHMARK (std_function_create_invoke, iters)
 
 BENCHMARK (Function_create_invoke, iters)
 
 BENCHMARK (mem_fn_create_invoke, iters)
 
 BENCHMARK (std_bind_create_invoke, iters)
 
 BENCHMARK (std_bind_direct_invoke, iters)
 
 BENCHMARK (scope_guard_std_function, iters)
 
 BENCHMARK (scope_guard_std_function_rvalue, iters)
 
 BENCHMARK (scope_guard_Function_rvalue, iters)
 
 BENCHMARK (scope_guard_fn_ptr, iters)
 
 BENCHMARK (scope_guard_lambda_noop, iters)
 
 BENCHMARK (scope_guard_lambda_function, iters)
 
 BENCHMARK (scope_guard_lambda_local_var, iters)
 
 BENCHMARK_DRAW_LINE ()
 
 BENCHMARK (throw_exception, iters)
 
 BENCHMARK (catch_no_exception, iters)
 
 BENCHMARK (return_exc_ptr, iters)
 
 BENCHMARK (exc_ptr_param_return, iters)
 
 BENCHMARK (exc_ptr_param_return_null, iters)
 
 BENCHMARK (return_string, iters)
 
 BENCHMARK (return_string_noexcept, iters)
 
 BENCHMARK (return_code, iters)
 
 BENCHMARK (return_code_noexcept, iters)
 
 BENCHMARK (std_function_create_move_invoke, iters)
 
 BENCHMARK (Function_create_move_invoke, iters)
 
 BENCHMARK (std_function_create_move_invoke_small, iters)
 
 BENCHMARK (Function_create_move_invoke_small, iters)
 
 BENCHMARK (std_function_create_move_invoke_ref, iters)
 
 BENCHMARK (Function_create_move_invoke_ref, iters)
 
 BENCHMARK (function_ptr_move, iters)
 
 BENCHMARK (std_function_move_small, iters)
 
 BENCHMARK (Function_move_small, iters)
 
 BENCHMARK (std_function_move_small_trivial, iters)
 
 BENCHMARK (Function_move_small_trivial, iters)
 
 BENCHMARK (std_function_move_large, iters)
 
 BENCHMARK (Function_move_large, iters)
 
int main (int argc, char **argv)
 

Function Documentation

BENCHMARK ( fn_invoke  ,
iters   
)

Definition at line 32 of file main.cpp.

References doNothing().

32  {
33  for (size_t n = 0; n < iters; ++n) {
34  doNothing();
35  }
36 }
void doNothing()
BENCHMARK ( fn_ptr_invoke  ,
iters   
)

Definition at line 39 of file main.cpp.

References BM_fn_ptr_invoke_impl(), and doNothing().

39  {
41 }
void BM_fn_ptr_invoke_impl(int iters, void(*fn)())
void doNothing()
BENCHMARK ( std_function_invoke  ,
iters   
)

Definition at line 44 of file main.cpp.

References BM_std_function_invoke_impl(), and doNothing().

44  {
46 }
void doNothing()
void BM_std_function_invoke_impl(int iters, const std::function< void()> &fn)
BENCHMARK ( Function_invoke  ,
iters   
)

Definition at line 49 of file main.cpp.

References BM_Function_invoke_impl(), and doNothing().

49  {
51 }
void BM_Function_invoke_impl(int iters, const folly::Function< void() const > &fn)
void doNothing()
BENCHMARK ( mem_fn_invoke  ,
iters   
)

Definition at line 54 of file main.cpp.

References BM_mem_fn_invoke_impl(), TestClass::doNothing(), and tc.

54  {
55  TestClass tc;
57 }
static bool tc
void doNothing()
void BM_mem_fn_invoke_impl(int iters, TestClass *tc, void(TestClass::*memfn)())
BENCHMARK ( fn_ptr_invoke_through_inline  ,
iters   
)

Definition at line 60 of file main.cpp.

References BM_fn_ptr_invoke_inlined_impl(), and doNothing().

60  {
62 }
void doNothing()
void BM_fn_ptr_invoke_inlined_impl(int iters, void(*fn)())
BENCHMARK ( lambda_invoke_fn  ,
iters   
)

Definition at line 65 of file main.cpp.

References BM_invoke_fn_template_impl(), and doNothing().

65  {
66  BM_invoke_fn_template_impl(iters, [] { doNothing(); });
67 }
void doNothing()
void BM_invoke_fn_template_impl(int iters, const T &fn)
BENCHMARK ( lambda_noop  ,
iters   
)

Definition at line 70 of file main.cpp.

References BM_invoke_fn_template_impl().

70  {
71  BM_invoke_fn_template_impl(iters, [] {});
72 }
void BM_invoke_fn_template_impl(int iters, const T &fn)
BENCHMARK ( lambda_local_var  ,
iters   
)

Definition at line 75 of file main.cpp.

References BM_invoke_fn_template_impl(), and uint32_t.

75  {
76  uint32_t count1 = 0;
77  uint32_t count2 = 0;
78  BM_invoke_fn_template_impl(iters, [&] {
79  // Do something slightly more complicated than just incrementing a
80  // variable. Otherwise gcc is smart enough to optimize the loop away.
81  if (count1 & 0x1) {
82  ++count2;
83  }
84  ++count1;
85  });
86 
87  // Use the values we computed, so gcc won't optimize the loop away
88  CHECK_EQ(iters, count1);
89  CHECK_EQ(iters / 2, count2);
90 }
void BM_invoke_fn_template_impl(int iters, const T &fn)
BENCHMARK ( fn_ptr_invoke_through_template  ,
iters   
)

Definition at line 93 of file main.cpp.

References BM_invoke_fn_template_impl(), and doNothing().

93  {
95 }
void doNothing()
void BM_invoke_fn_template_impl(int iters, const T &fn)
BENCHMARK ( virtual_fn_invoke  ,
iters   
)

Definition at line 98 of file main.cpp.

References BM_virtual_fn_invoke_impl().

98  {
99  VirtualClass vc;
100  BM_virtual_fn_invoke_impl(iters, &vc);
101 }
void BM_virtual_fn_invoke_impl(int iters, VirtualClass *vc)
BENCHMARK ( fn_ptr_create_invoke  ,
iters   
)

Definition at line 104 of file main.cpp.

References doNothing().

104  {
105  for (size_t n = 0; n < iters; ++n) {
106  void (*fn)() = doNothing;
107  fn();
108  }
109 }
void doNothing()
BENCHMARK ( std_function_create_invoke  ,
iters   
)

Definition at line 112 of file main.cpp.

References doNothing().

112  {
113  for (size_t n = 0; n < iters; ++n) {
114  std::function<void()> fn = doNothing;
115  fn();
116  }
117 }
void doNothing()
BENCHMARK ( Function_create_invoke  ,
iters   
)

Definition at line 121 of file main.cpp.

References doNothing().

121  {
122  for (size_t n = 0; n < iters; ++n) {
124  fn();
125  }
126 }
void doNothing()
BENCHMARK ( mem_fn_create_invoke  ,
iters   
)

Definition at line 129 of file main.cpp.

References TestClass::doNothing(), and tc.

129  {
130  TestClass tc;
131  for (size_t n = 0; n < iters; ++n) {
132  void (TestClass::*memfn)() = &TestClass::doNothing;
133  (tc.*memfn)();
134  }
135 }
static bool tc
void doNothing()
BENCHMARK ( std_bind_create_invoke  ,
iters   
)

Definition at line 139 of file main.cpp.

References folly::netops::bind(), TestClass::doNothing(), and tc.

139  {
140  TestClass tc;
141  for (size_t n = 0; n < iters; ++n) {
142  std::function<void()> fn = std::bind(&TestClass::doNothing, &tc);
143  fn();
144  }
145 }
static bool tc
void doNothing()
int bind(NetworkSocket s, const sockaddr *name, socklen_t namelen)
Definition: NetOps.cpp:76
BENCHMARK ( std_bind_direct_invoke  ,
iters   
)

Definition at line 148 of file main.cpp.

References folly::netops::bind(), TestClass::doNothing(), and tc.

148  {
149  TestClass tc;
150  for (size_t n = 0; n < iters; ++n) {
151  auto fn = std::bind(&TestClass::doNothing, &tc);
152  fn();
153  }
154 }
static bool tc
void doNothing()
int bind(NetworkSocket s, const sockaddr *name, socklen_t namelen)
Definition: NetOps.cpp:76
BENCHMARK ( scope_guard_std_function  ,
iters   
)

Definition at line 157 of file main.cpp.

References doNothing(), g(), and folly::makeGuard().

157  {
158  std::function<void()> fn(doNothing);
159  for (size_t n = 0; n < iters; ++n) {
160  auto g = makeGuard(fn);
161  (void)g;
162  }
163 }
void doNothing()
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( scope_guard_std_function_rvalue  ,
iters   
)

Definition at line 167 of file main.cpp.

References doNothing(), g(), and folly::makeGuard().

167  {
168  for (size_t n = 0; n < iters; ++n) {
169  auto g = makeGuard(std::function<void()>(doNothing));
170  (void)g;
171  }
172 }
void doNothing()
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( scope_guard_Function_rvalue  ,
iters   
)

Definition at line 176 of file main.cpp.

References doNothing(), g(), and folly::makeGuard().

176  {
177  for (size_t n = 0; n < iters; ++n) {
178  auto g = makeGuard(folly::Function<void()>(doNothing));
179  (void)g;
180  }
181 }
void doNothing()
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( scope_guard_fn_ptr  ,
iters   
)

Definition at line 184 of file main.cpp.

References doNothing(), g(), and folly::makeGuard().

184  {
185  for (size_t n = 0; n < iters; ++n) {
186  auto g = makeGuard(doNothing);
187  (void)g;
188  }
189 }
void doNothing()
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( scope_guard_lambda_noop  ,
iters   
)

Definition at line 192 of file main.cpp.

References g(), and folly::makeGuard().

192  {
193  for (size_t n = 0; n < iters; ++n) {
194  auto g = makeGuard([] {});
195  (void)g;
196  }
197 }
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( scope_guard_lambda_function  ,
iters   
)

Definition at line 200 of file main.cpp.

References doNothing(), g(), and folly::makeGuard().

200  {
201  for (size_t n = 0; n < iters; ++n) {
202  auto g = makeGuard([] { doNothing(); });
203  (void)g;
204  }
205 }
void doNothing()
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( scope_guard_lambda_local_var  ,
iters   
)

Definition at line 208 of file main.cpp.

References BENCHMARK_DRAW_LINE(), count, g(), folly::makeGuard(), and uint32_t.

208  {
209  uint32_t count = 0;
210  for (size_t n = 0; n < iters; ++n) {
211  auto g = makeGuard([&] {
212  // Increment count if n is odd. Without this conditional check
213  // (i.e., if we just increment count each time through the loop),
214  // gcc is smart enough to optimize the entire loop away, and just set
215  // count = iters.
216  if (n & 0x1) {
217  ++count;
218  }
219  });
220  (void)g;
221  }
222 
223  // Check that the value of count is what we expect.
224  // This check is necessary: if we don't use count, gcc detects that count is
225  // unused and optimizes the entire loop away.
226  CHECK_EQ(iters / 2, count);
227 }
int * count
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
g_t g(f_t)
BENCHMARK ( throw_exception  ,
iters   
)

Definition at line 231 of file main.cpp.

231  {
232  for (size_t n = 0; n < iters; ++n) {
233  try {
234  folly::throw_exception<Exception>("this is a test");
235  } catch (const std::exception& ex) {
236  }
237  }
238 }
BENCHMARK ( catch_no_exception  ,
iters   
)

Definition at line 240 of file main.cpp.

References doNothing().

240  {
241  for (size_t n = 0; n < iters; ++n) {
242  try {
243  doNothing();
244  } catch (const std::exception& ex) {
245  }
246  }
247 }
void doNothing()
BENCHMARK ( return_exc_ptr  ,
iters   
)

Definition at line 249 of file main.cpp.

References returnExceptionPtr().

249  {
250  for (size_t n = 0; n < iters; ++n) {
252  }
253 }
std::exception_ptr returnExceptionPtr()
BENCHMARK ( exc_ptr_param_return  ,
iters   
)

Definition at line 255 of file main.cpp.

References exceptionPtrReturnParam().

255  {
256  for (size_t n = 0; n < iters; ++n) {
257  std::exception_ptr ex;
259  }
260 }
void exceptionPtrReturnParam(std::exception_ptr *excReturn)
BENCHMARK ( exc_ptr_param_return_null  ,
iters   
)

Definition at line 262 of file main.cpp.

References exceptionPtrReturnParam().

262  {
263  for (size_t n = 0; n < iters; ++n) {
264  exceptionPtrReturnParam(nullptr);
265  }
266 }
void exceptionPtrReturnParam(std::exception_ptr *excReturn)
BENCHMARK ( return_string  ,
iters   
)

Definition at line 268 of file main.cpp.

References returnString().

268  {
269  for (size_t n = 0; n < iters; ++n) {
270  returnString();
271  }
272 }
std::string returnString()
BENCHMARK ( return_string_noexcept  ,
iters   
)

Definition at line 274 of file main.cpp.

References returnStringNoExcept().

274  {
275  for (size_t n = 0; n < iters; ++n) {
277  }
278 }
std::string returnStringNoExcept() noexcept
BENCHMARK ( return_code  ,
iters   
)

Definition at line 280 of file main.cpp.

References returnCode().

280  {
281  for (size_t n = 0; n < iters; ++n) {
282  returnCode(false);
283  }
284 }
int returnCode(int value)
BENCHMARK ( return_code_noexcept  ,
iters   
)

Definition at line 286 of file main.cpp.

References BENCHMARK_DRAW_LINE(), and returnCodeNoExcept().

286  {
287  for (size_t n = 0; n < iters; ++n) {
288  returnCodeNoExcept(false);
289  }
290 }
int returnCodeNoExcept(int value) noexcept
BENCHMARK ( std_function_create_move_invoke  ,
iters   
)

Definition at line 294 of file main.cpp.

References a, f, i, folly::pushmi::invoke, and folly::gen::move.

294  {
295  LargeClass a;
296  for (size_t i = 0; i < iters; ++i) {
297  std::function<void()> f(a);
298  invoke(std::move(f));
299  }
300 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
char a
BENCHMARK ( Function_create_move_invoke  ,
iters   
)

Definition at line 302 of file main.cpp.

References a, f, i, folly::pushmi::invoke, and folly::gen::move.

302  {
303  LargeClass a;
304  for (size_t i = 0; i < iters; ++i) {
306  invoke(std::move(f));
307  }
308 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
char a
BENCHMARK ( std_function_create_move_invoke_small  ,
iters   
)

Definition at line 310 of file main.cpp.

References doNothing(), f, i, folly::pushmi::invoke, and folly::gen::move.

310  {
311  for (size_t i = 0; i < iters; ++i) {
312  std::function<void()> f(doNothing);
313  invoke(std::move(f));
314  }
315 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
BENCHMARK ( Function_create_move_invoke_small  ,
iters   
)

Definition at line 317 of file main.cpp.

References doNothing(), f, i, folly::pushmi::invoke, and folly::gen::move.

317  {
318  for (size_t i = 0; i < iters; ++i) {
320  invoke(std::move(f));
321  }
322 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
BENCHMARK ( std_function_create_move_invoke_ref  ,
iters   
)

Definition at line 324 of file main.cpp.

References a, f, i, folly::pushmi::invoke, and folly::gen::move.

324  {
325  LargeClass a;
326  for (size_t i = 0; i < iters; ++i) {
327  std::function<void()> f(std::ref(a));
328  invoke(std::move(f));
329  }
330 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
char a
BENCHMARK ( Function_create_move_invoke_ref  ,
iters   
)

Definition at line 332 of file main.cpp.

References a, BENCHMARK_DRAW_LINE(), f, i, folly::pushmi::invoke, and folly::gen::move.

332  {
333  LargeClass a;
334  for (size_t i = 0; i < iters; ++i) {
335  folly::Function<void()> f(std::ref(a));
336  invoke(std::move(f));
337  }
338 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
char a
BENCHMARK ( function_ptr_move  ,
iters   
)

Definition at line 342 of file main.cpp.

References doNothing(), folly::doNotOptimizeAway(), f, i, and folly::gen::move.

342  {
343  auto f = &doNothing;
344  for (size_t i = 0; i < iters; ++i) {
345  auto f2 = std::move(f);
347  f = std::move(f2);
348  }
349 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK ( std_function_move_small  ,
iters   
)

Definition at line 351 of file main.cpp.

References a, doNothing(), folly::doNotOptimizeAway(), f, i, and folly::gen::move.

351  {
352  std::shared_ptr<int> a(new int);
353  std::function<void()> f([a]() { doNothing(); });
354  for (size_t i = 0; i < iters; ++i) {
355  auto f2 = std::move(f);
357  f = std::move(f2);
358  }
359 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
char a
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK ( Function_move_small  ,
iters   
)

Definition at line 361 of file main.cpp.

References a, doNothing(), folly::doNotOptimizeAway(), f, i, and folly::gen::move.

361  {
362  std::shared_ptr<int> a(new int);
363  folly::Function<void()> f([a]() { doNothing(); });
364  for (size_t i = 0; i < iters; ++i) {
365  auto f2 = std::move(f);
367  f = std::move(f2);
368  }
369 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
char a
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK ( std_function_move_small_trivial  ,
iters   
)

Definition at line 371 of file main.cpp.

References doNothing(), folly::doNotOptimizeAway(), f, i, and folly::gen::move.

371  {
372  std::function<void()> f(doNothing);
373  for (size_t i = 0; i < iters; ++i) {
374  auto f2 = std::move(f);
376  f = std::move(f2);
377  }
378 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK ( Function_move_small_trivial  ,
iters   
)

Definition at line 380 of file main.cpp.

References doNothing(), folly::doNotOptimizeAway(), f, i, and folly::gen::move.

380  {
382  for (size_t i = 0; i < iters; ++i) {
383  auto f2 = std::move(f);
385  f = std::move(f2);
386  }
387 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
void doNothing()
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK ( std_function_move_large  ,
iters   
)

Definition at line 389 of file main.cpp.

References a, folly::doNotOptimizeAway(), f, i, and folly::gen::move.

389  {
390  LargeClass a;
391  std::function<void()> f(a);
392  for (size_t i = 0; i < iters; ++i) {
393  auto f2 = std::move(f);
395  f = std::move(f2);
396  }
397 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
char a
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK ( Function_move_large  ,
iters   
)

Definition at line 399 of file main.cpp.

References a, folly::doNotOptimizeAway(), f, i, and folly::gen::move.

399  {
400  LargeClass a;
402  for (size_t i = 0; i < iters; ++i) {
403  auto f2 = std::move(f);
405  f = std::move(f2);
406  }
407 }
auto f
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
char a
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
Definition: Benchmark.h:258
BENCHMARK_DRAW_LINE ( )

Referenced by BENCHMARK().

DECLARE_int32 ( bm_max_iters  )
int main ( int  argc,
char **  argv 
)

Definition at line 411 of file main.cpp.

References folly::runBenchmarks().

411  {
412  gflags::ParseCommandLineFlags(&argc, &argv, true);
414 }
void runBenchmarks()
Definition: Benchmark.cpp:456
char ** argv