From 44a6d7968a00f2b70720897d660f1512e3645416 Mon Sep 17 00:00:00 2001 From: Michel Hermier Date: Thu, 23 Dec 2021 12:38:22 +0100 Subject: [PATCH] Tests: Benchmark `DisjointChunck::is_empty` --- Tests/AK/TestDisjointChunks.cpp | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/Tests/AK/TestDisjointChunks.cpp b/Tests/AK/TestDisjointChunks.cpp index 0d6c1d1f21..e8897d2a15 100644 --- a/Tests/AK/TestDisjointChunks.cpp +++ b/Tests/AK/TestDisjointChunks.cpp @@ -80,3 +80,59 @@ TEST_CASE(spans) EXPECT_EQ(it, cross_chunk_slice.end()); } + +#define INIT_ITERATIONS (1'000'000) +#define ITERATIONS (100) + +static DisjointChunks basic_really_empty_chunks; + +BENCHMARK_CASE(basic_really_empty) +{ + DisjointChunks chunks; + for (size_t i = 0; i < ITERATIONS; ++i) + EXPECT(chunks.is_empty()); +} + +static DisjointChunks basic_really_empty_large_chunks = []() { + DisjointChunks chunks; + chunks.ensure_capacity(INIT_ITERATIONS); + for (size_t i = 0; i < INIT_ITERATIONS; ++i) + chunks.append({}); + return chunks; +}(); + +BENCHMARK_CASE(basic_really_empty_large) +{ + for (size_t i = 0; i < ITERATIONS; ++i) + EXPECT(basic_really_empty_large_chunks.is_empty()); +} + +static DisjointChunks basic_mostly_empty_chunks = []() { + DisjointChunks chunks; + chunks.ensure_capacity(INIT_ITERATIONS + 1); + for (size_t i = 0; i < INIT_ITERATIONS; ++i) + chunks.append({}); + chunks.append({ 1, 2, 3 }); + return chunks; +}(); + +BENCHMARK_CASE(basic_mostly_empty) +{ + for (size_t i = 0; i < ITERATIONS; ++i) { + EXPECT(!basic_mostly_empty_chunks.is_empty()); + } +} + +static DisjointChunks basic_full_chunks = []() { + DisjointChunks chunks; + chunks.ensure_capacity(INIT_ITERATIONS + 1); + for (size_t i = 0; i < INIT_ITERATIONS; ++i) + chunks.append({ 1, 2, 3 }); + return chunks; +}(); + +BENCHMARK_CASE(basic_full) +{ + for (size_t i = 0; i < ITERATIONS; ++i) + EXPECT(!basic_full_chunks.is_empty()); +}