// Copyright 2017 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 "benchmarks.h" #include "runner.h" namespace { // Trace buffer sizes. // "large" must be sized so it does not overflow during oneshot tests. // The benchmark will assert-fail if the buffer fills: Otherwise the benchmark // is invalid. static constexpr size_t kLargeBufferSizeBytes = 16 * 1024 * 1024; // "small" is sized so the buffer does fill, repeatedly, during the test. // The number is chosen to make it easier to eyeball timing differences // between large and small. static constexpr size_t kSmallBufferSizeBytes = 16 * 1024; } // namespace int main(int argc, char** argv) { RunTracingDisabledBenchmarks(); RunNoTraceBenchmarks(); static const BenchmarkSpec specs[] = { { // Note: The buffer is not allowed to fill in oneshot mode. "oneshot, 16MB buffer", TRACE_BUFFERING_MODE_ONESHOT, kLargeBufferSizeBytes, kDefaultRunIterations, }, { "streaming, 16MB buffer", TRACE_BUFFERING_MODE_STREAMING, kLargeBufferSizeBytes, kDefaultRunIterations, }, { "circular, 16MB buffer", TRACE_BUFFERING_MODE_CIRCULAR, kLargeBufferSizeBytes, kDefaultRunIterations, }, { "streaming, 16K buffer", TRACE_BUFFERING_MODE_STREAMING, kSmallBufferSizeBytes, kDefaultRunIterations, }, { "circular, 16K buffer", TRACE_BUFFERING_MODE_CIRCULAR, kSmallBufferSizeBytes, kDefaultRunIterations, }, }; for (const auto& spec : specs) { RunTracingEnabledBenchmarks(&spec); } printf("\nTracing benchmarks completed.\n"); return 0; }