blob: c697884b7eef18b24e18a76d3ed597952a07958b [file] [log] [blame]
// 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;
}