blob: 1acbf69bf2c88549b0150dc2c74036a959dce5fb [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <stdlib.h>
#include <perftest/perftest.h>
namespace {
// Measure the time taken to malloc() and free() a 100-byte block.
//
// This serves an example of a multi-step perf test. It is also useful for
// getting a rough idea of the cost of malloc() and free().
bool MallocFreeTest(perftest::RepeatState* state) {
state->DeclareStep("malloc");
state->DeclareStep("free");
while (state->KeepRunning()) {
void* block = malloc(100);
// Clang can optimize away pairs of malloc() and free() calls;
// prevent it from doing that.
perftest::DoNotOptimize(block);
if (!block) {
return false;
}
state->NextStep();
free(block);
}
return true;
}
void RegisterTests() { perftest::RegisterTest("MallocFree/100bytes", MallocFreeTest); }
PERFTEST_CTOR(RegisterTests)
} // namespace