/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
namespace mozilla { void GTestBench(constchar* aSuite, constchar* aName, const std::function<void()>& aTest) { #ifdefined(DEBUG) || defined(MOZ_ASAN) // Run the test to make sure that it doesn't fail but don't log // any measurements since it's not an optimized build.
aTest(); #else bool shouldAlert = bool(getenv("PERFHERDER_ALERTING_ENABLED"));
std::vector<int> durations;
for (int i = 0; i < MOZ_GTEST_NUM_ITERATIONS; i++) {
mozilla::TimeStamp start = TimeStamp::Now();
std::string replicatesStr = "[" + std::to_string(durations[0]); for (int i = 1; i < MOZ_GTEST_NUM_ITERATIONS; i++) {
replicatesStr += "," + std::to_string(durations[i]);
}
replicatesStr += "]";
// median is at index floor(i/2) if number of replicates is odd, // (i/2-1) if even
std::sort(durations.begin(), durations.end()); int medianIndex =
(MOZ_GTEST_NUM_ITERATIONS / 2) + ((durations.size() % 2 == 0) ? (-1) : 0);
// Print the result for each test. Let perfherder aggregate for us
printf( "PERFHERDER_DATA: {\"framework\": {\"name\": \"%s\"}, " "\"suites\": [{\"name\": \"%s\", \"subtests\": " "[{\"name\": \"%s\", \"value\": %i, \"replicates\": %s, " "\"lowerIsBetter\": true, \"shouldAlert\": %s}]" "}]}\n",
MOZ_GTEST_BENCH_FRAMEWORK, aSuite, aName, durations[medianIndex],
replicatesStr.c_str(), shouldAlert ? "true" : "false"); #endif
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.