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