diff --git a/eden/fs/benchmarks/future.cpp b/eden/fs/benchmarks/future.cpp index ad766479cd..dcc9d6c682 100644 --- a/eden/fs/benchmarks/future.cpp +++ b/eden/fs/benchmarks/future.cpp @@ -22,6 +22,19 @@ void immediate_future(benchmark::State& state) { state.SetItemsProcessed(std::move(fut).get()); } +void immediate_future_exc(benchmark::State& state) { + ImmediateFuture fut{folly::Try{std::logic_error("Foo")}}; + + uint64_t processed = 0; + for (auto _ : state) { + auto newFut = std::move(fut).thenValue([](uint64_t v) { return v + 1; }); + fut = std::move(newFut); + processed++; + } + benchmark::DoNotOptimize(fut); + state.SetItemsProcessed(processed); +} + void folly_future(benchmark::State& state) { folly::Future fut{0}; for (auto _ : state) { @@ -32,6 +45,7 @@ void folly_future(benchmark::State& state) { } BENCHMARK(immediate_future); +BENCHMARK(immediate_future_exc); BENCHMARK(folly_future); } // namespace