| Index: testing/perf/perf_test.cc
|
| diff --git a/testing/perf/perf_test.cc b/testing/perf/perf_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..802b33a2c7134787e1cf4c3522404ca8e52661fc
|
| --- /dev/null
|
| +++ b/testing/perf/perf_test.cc
|
| @@ -0,0 +1,188 @@
|
| +// Copyright (c) 2012 The Chromium 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 "testing/perf/perf_test.h"
|
| +
|
| +#include <stdio.h>
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| +#include "base/strings/stringprintf.h"
|
| +
|
| +namespace {
|
| +
|
| +std::string ResultsToString(const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& values,
|
| + const std::string& prefix,
|
| + const std::string& suffix,
|
| + const std::string& units,
|
| + bool important) {
|
| + // <*>RESULT <graph_name>: <trace_name>= <value> <units>
|
| + // <*>RESULT <graph_name>: <trace_name>= {<mean>, <std deviation>} <units>
|
| + // <*>RESULT <graph_name>: <trace_name>= [<value>,value,value,...,] <units>
|
| + return base::StringPrintf("%sRESULT %s%s: %s= %s%s%s %s\n",
|
| + important ? "*" : "", measurement.c_str(), modifier.c_str(),
|
| + trace.c_str(), prefix.c_str(), values.c_str(), suffix.c_str(),
|
| + units.c_str());
|
| +}
|
| +
|
| +void PrintResultsImpl(const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& values,
|
| + const std::string& prefix,
|
| + const std::string& suffix,
|
| + const std::string& units,
|
| + bool important) {
|
| + fflush(stdout);
|
| + printf("%s", ResultsToString(measurement, modifier, trace, values,
|
| + prefix, suffix, units, important).c_str());
|
| + fflush(stdout);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +namespace perf_test {
|
| +
|
| +void PrintResult(const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + size_t value,
|
| + const std::string& units,
|
| + bool important) {
|
| + PrintResultsImpl(measurement,
|
| + modifier,
|
| + trace,
|
| + base::UintToString(static_cast<unsigned int>(value)),
|
| + std::string(),
|
| + std::string(),
|
| + units,
|
| + important);
|
| +}
|
| +
|
| +void AppendResult(std::string& output,
|
| + const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + size_t value,
|
| + const std::string& units,
|
| + bool important) {
|
| + output += ResultsToString(
|
| + measurement,
|
| + modifier,
|
| + trace,
|
| + base::UintToString(static_cast<unsigned int>(value)),
|
| + std::string(),
|
| + std::string(),
|
| + units,
|
| + important);
|
| +}
|
| +
|
| +void PrintResult(const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& value,
|
| + const std::string& units,
|
| + bool important) {
|
| + PrintResultsImpl(measurement,
|
| + modifier,
|
| + trace,
|
| + value,
|
| + std::string(),
|
| + std::string(),
|
| + units,
|
| + important);
|
| +}
|
| +
|
| +void AppendResult(std::string& output,
|
| + const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& value,
|
| + const std::string& units,
|
| + bool important) {
|
| + output += ResultsToString(measurement,
|
| + modifier,
|
| + trace,
|
| + value,
|
| + std::string(),
|
| + std::string(),
|
| + units,
|
| + important);
|
| +}
|
| +
|
| +void PrintResultMeanAndError(const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& mean_and_error,
|
| + const std::string& units,
|
| + bool important) {
|
| + PrintResultsImpl(measurement, modifier, trace, mean_and_error,
|
| + "{", "}", units, important);
|
| +}
|
| +
|
| +void AppendResultMeanAndError(std::string& output,
|
| + const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& mean_and_error,
|
| + const std::string& units,
|
| + bool important) {
|
| + output += ResultsToString(measurement, modifier, trace, mean_and_error,
|
| + "{", "}", units, important);
|
| +}
|
| +
|
| +void PrintResultList(const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& values,
|
| + const std::string& units,
|
| + bool important) {
|
| + PrintResultsImpl(measurement, modifier, trace, values,
|
| + "[", "]", units, important);
|
| +}
|
| +
|
| +void AppendResultList(std::string& output,
|
| + const std::string& measurement,
|
| + const std::string& modifier,
|
| + const std::string& trace,
|
| + const std::string& values,
|
| + const std::string& units,
|
| + bool important) {
|
| + output += ResultsToString(measurement, modifier, trace, values,
|
| + "[", "]", units, important);
|
| +}
|
| +
|
| +void PrintSystemCommitCharge(const std::string& test_name,
|
| + size_t charge,
|
| + bool important) {
|
| + PrintSystemCommitCharge(stdout, test_name, charge, important);
|
| +}
|
| +
|
| +void PrintSystemCommitCharge(FILE* target,
|
| + const std::string& test_name,
|
| + size_t charge,
|
| + bool important) {
|
| + fprintf(target, "%s", SystemCommitChargeToString(test_name, charge,
|
| + important).c_str());
|
| +}
|
| +
|
| +std::string SystemCommitChargeToString(const std::string& test_name,
|
| + size_t charge,
|
| + bool important) {
|
| + std::string trace_name(test_name);
|
| + std::string output;
|
| + AppendResult(output,
|
| + "commit_charge",
|
| + std::string(),
|
| + "cc" + trace_name,
|
| + charge,
|
| + "kb",
|
| + important);
|
| + return output;
|
| +}
|
| +
|
| +} // namespace perf_test
|
|
|