Source code
Revision control
Copy as Markdown
Other Tools
/* 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
/**
* Create an interface to measure iterations for a micro benchmark. These iterations
* will then be reported to the perftest runner.
*
* @param {string} metricName
*/
function measureIterations(metricName) {
let accumulatedTime = 0;
let iterations = 0;
let now = 0;
return {
/**
* Start a measurement.
*/
start() {
now = Cu.now();
},
/**
* Stop a measurement, and record the elapsed time.
*/
stop() {
accumulatedTime += Cu.now() - now;
iterations++;
},
/**
* Report the metrics to perftest after finishing the microbenchmark.
*/
reportMetrics() {
const metrics = {};
metrics[metricName + " iterations"] = iterations;
metrics[metricName + " accumulatedTime"] = accumulatedTime;
metrics[metricName + " perCallTime"] = accumulatedTime / iterations;
info("perfMetrics", metrics);
},
};
}