| // 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 |