mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
benchmark: benchmark ImmediateFuture::thenValue exception case
Summary: This case shows up when profiling Buck builds, let's add a benchmark to measure the improvements made to it. Reviewed By: fanzeyi Differential Revision: D31655224 fbshipit-source-id: 8a4248160bafe5e56829bb896866e8ad7b97ba79
This commit is contained in:
parent
bf80d78e16
commit
fe1a6e2754
@ -22,6 +22,19 @@ void immediate_future(benchmark::State& state) {
|
|||||||
state.SetItemsProcessed(std::move(fut).get());
|
state.SetItemsProcessed(std::move(fut).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void immediate_future_exc(benchmark::State& state) {
|
||||||
|
ImmediateFuture<uint64_t> fut{folly::Try<uint64_t>{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) {
|
void folly_future(benchmark::State& state) {
|
||||||
folly::Future<int> fut{0};
|
folly::Future<int> fut{0};
|
||||||
for (auto _ : state) {
|
for (auto _ : state) {
|
||||||
@ -32,6 +45,7 @@ void folly_future(benchmark::State& state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BENCHMARK(immediate_future);
|
BENCHMARK(immediate_future);
|
||||||
|
BENCHMARK(immediate_future_exc);
|
||||||
BENCHMARK(folly_future);
|
BENCHMARK(folly_future);
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user