20 #include <glog/logging.h> 33 for (
size_t n = 0; n < iters; ++n) {
88 CHECK_EQ(iters, count1);
89 CHECK_EQ(iters / 2, count2);
105 for (
size_t n = 0; n < iters; ++n) {
113 for (
size_t n = 0; n < iters; ++n) {
122 for (
size_t n = 0; n < iters; ++n) {
131 for (
size_t n = 0; n < iters; ++n) {
141 for (
size_t n = 0; n < iters; ++n) {
150 for (
size_t n = 0; n < iters; ++n) {
159 for (
size_t n = 0; n < iters; ++n) {
168 for (
size_t n = 0; n < iters; ++n) {
177 for (
size_t n = 0; n < iters; ++n) {
185 for (
size_t n = 0; n < iters; ++n) {
193 for (
size_t n = 0; n < iters; ++n) {
201 for (
size_t n = 0; n < iters; ++n) {
210 for (
size_t n = 0; n < iters; ++n) {
226 CHECK_EQ(iters / 2, count);
232 for (
size_t n = 0; n < iters; ++n) {
234 folly::throw_exception<Exception>(
"this is a test");
235 }
catch (
const std::exception& ex) {
241 for (
size_t n = 0; n < iters; ++n) {
244 }
catch (
const std::exception& ex) {
250 for (
size_t n = 0; n < iters; ++n) {
256 for (
size_t n = 0; n < iters; ++n) {
257 std::exception_ptr ex;
263 for (
size_t n = 0; n < iters; ++n) {
269 for (
size_t n = 0; n < iters; ++n) {
275 for (
size_t n = 0; n < iters; ++n) {
281 for (
size_t n = 0; n < iters; ++n) {
287 for (
size_t n = 0; n < iters; ++n) {
296 for (
size_t i = 0;
i < iters; ++
i) {
297 std::function<void()>
f(a);
304 for (
size_t i = 0;
i < iters; ++
i) {
310 BENCHMARK(std_function_create_move_invoke_small, iters) {
311 for (
size_t i = 0;
i < iters; ++
i) {
318 for (
size_t i = 0;
i < iters; ++
i) {
326 for (
size_t i = 0;
i < iters; ++
i) {
327 std::function<void()>
f(std::ref(a));
334 for (
size_t i = 0;
i < iters; ++
i) {
344 for (
size_t i = 0;
i < iters; ++
i) {
352 std::shared_ptr<int>
a(
new int);
353 std::function<void()>
f([a]() {
doNothing(); });
354 for (
size_t i = 0;
i < iters; ++
i) {
362 std::shared_ptr<int>
a(
new int);
364 for (
size_t i = 0;
i < iters; ++
i) {
373 for (
size_t i = 0;
i < iters; ++
i) {
382 for (
size_t i = 0;
i < iters; ++
i) {
391 std::function<void()>
f(a);
392 for (
size_t i = 0;
i < iters; ++
i) {
402 for (
size_t i = 0;
i < iters; ++
i) {
412 gflags::ParseCommandLineFlags(&argc, &argv,
true);
void BM_Function_invoke_impl(int iters, const folly::Function< void() const > &fn)
void BM_virtual_fn_invoke_impl(int iters, VirtualClass *vc)
int returnCode(int value)
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
DECLARE_int32(bm_max_iters)
constexpr detail::Map< Move > move
std::string returnStringNoExcept() noexcept
void BM_fn_ptr_invoke_impl(int iters, void(*fn)())
std::exception_ptr returnExceptionPtr()
BENCHMARK(fn_invoke, iters)
void exceptionPtrReturnParam(std::exception_ptr *excReturn)
std::string returnString()
void BM_fn_ptr_invoke_inlined_impl(int iters, void(*fn)())
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
void BM_invoke_fn_template_impl(int iters, const T &fn)
int bind(NetworkSocket s, const sockaddr *name, socklen_t namelen)
int main(int argc, char **argv)
int returnCodeNoExcept(int value) noexcept
void BM_mem_fn_invoke_impl(int iters, TestClass *tc, void(TestClass::*memfn)())
void BM_std_function_invoke_impl(int iters, const std::function< void()> &fn)
auto doNotOptimizeAway(const T &datum) -> typename std::enable_if< !detail::DoNotOptimizeAwayNeedsIndirect< T >::value >::type
FOLLY_NOINLINE FOLLY_COLD void throw_exception(Ex &&ex)