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 |