CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
59 lines
1.5 KiB
C++
59 lines
1.5 KiB
C++
#include <cstdlib>
|
|
#include <map>
|
|
|
|
#include "benchmark/benchmark.h"
|
|
|
|
namespace {
|
|
|
|
std::map<int, int> ConstructRandomMap(int size) {
|
|
std::map<int, int> m;
|
|
for (int i = 0; i < size; ++i) {
|
|
m.insert(std::make_pair(std::rand() % size, std::rand() % size));
|
|
}
|
|
return m;
|
|
}
|
|
|
|
// Basic version.
|
|
void BM_MapLookup(benchmark::State& state) {
|
|
const int size = static_cast<int>(state.range(0));
|
|
std::map<int, int> m;
|
|
for (auto _ : state) {
|
|
state.PauseTiming();
|
|
m = ConstructRandomMap(size);
|
|
state.ResumeTiming();
|
|
for (int i = 0; i < size; ++i) {
|
|
auto it = m.find(std::rand() % size);
|
|
benchmark::DoNotOptimize(it);
|
|
}
|
|
}
|
|
state.SetItemsProcessed(state.iterations() * size);
|
|
}
|
|
BENCHMARK(BM_MapLookup)->Range(1 << 3, 1 << 12);
|
|
} // namespace
|
|
|
|
// Using fixtures.
|
|
class MapFixture : public ::benchmark::Fixture {
|
|
public:
|
|
void SetUp(const ::benchmark::State& st) override {
|
|
m = ConstructRandomMap(static_cast<int>(st.range(0)));
|
|
}
|
|
|
|
void TearDown(const ::benchmark::State& /*unused*/) override { m.clear(); }
|
|
|
|
std::map<int, int> m;
|
|
};
|
|
|
|
BENCHMARK_DEFINE_F(MapFixture, Lookup)(benchmark::State& state) {
|
|
const int size = static_cast<int>(state.range(0));
|
|
for (auto _ : state) {
|
|
for (int i = 0; i < size; ++i) {
|
|
auto it = m.find(std::rand() % size);
|
|
benchmark::DoNotOptimize(it);
|
|
}
|
|
}
|
|
state.SetItemsProcessed(state.iterations() * size);
|
|
}
|
|
BENCHMARK_REGISTER_F(MapFixture, Lookup)->Range(1 << 3, 1 << 12);
|
|
|
|
BENCHMARK_MAIN();
|