summaryrefslogtreecommitdiff
path: root/deps/node/benchmark/_benchmark_progress.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/benchmark/_benchmark_progress.js')
-rw-r--r--deps/node/benchmark/_benchmark_progress.js121
1 files changed, 0 insertions, 121 deletions
diff --git a/deps/node/benchmark/_benchmark_progress.js b/deps/node/benchmark/_benchmark_progress.js
deleted file mode 100644
index 935b1f24..00000000
--- a/deps/node/benchmark/_benchmark_progress.js
+++ /dev/null
@@ -1,121 +0,0 @@
-'use strict';
-
-const readline = require('readline');
-
-function pad(input, minLength, fill) {
- const result = String(input);
- const padding = fill.repeat(Math.max(0, minLength - result.length));
- return `${padding}${result}`;
-}
-
-function fraction(numerator, denominator) {
- const fdenominator = String(denominator);
- const fnumerator = pad(numerator, fdenominator.length, ' ');
- return `${fnumerator}/${fdenominator}`;
-}
-
-function getTime(diff) {
- const time = Math.ceil(diff[0] + diff[1] / 1e9);
- const hours = pad(Math.floor(time / 3600), 2, '0');
- const minutes = pad(Math.floor((time % 3600) / 60), 2, '0');
- const seconds = pad((time % 3600) % 60, 2, '0');
- return `${hours}:${minutes}:${seconds}`;
-}
-
-// A run is an item in the job queue: { binary, filename, iter }
-// A config is an item in the subqueue: { binary, filename, iter, configs }
-class BenchmarkProgress {
- constructor(queue, benchmarks) {
- this.queue = queue; // Scheduled runs.
- this.benchmarks = benchmarks; // Filenames of scheduled benchmarks.
- this.completedRuns = 0; // Number of completed runs.
- this.scheduledRuns = queue.length; // Number of scheduled runs.
- // Time when starting to run benchmarks.
- this.startTime = process.hrtime();
- // Number of times each file will be run (roughly).
- this.runsPerFile = queue.length / benchmarks.length;
- this.currentFile = ''; // Filename of current benchmark.
- this.currentFileConfig; // Configurations for current file
- // Number of configurations already run for the current file.
- this.completedConfig = 0;
- // Total number of configurations for the current file
- this.scheduledConfig = 0;
- this.interval; // Updates the elapsed time.
- }
-
- startQueue(index) {
- this.kStartOfQueue = index;
- this.currentFile = this.queue[index].filename;
- this.interval = setInterval(() => {
- if (this.completedRuns === this.scheduledRuns) {
- clearInterval(this.interval);
- } else {
- this.updateProgress();
- }
- }, 1000);
- }
-
- startSubqueue(data, index) {
- // This subqueue is generated by a new benchmark
- if (data.name !== this.currentFile || index === this.kStartOfQueue) {
- this.currentFile = data.name;
- this.scheduledConfig = data.queueLength;
- }
- this.completedConfig = 0;
- this.updateProgress();
- }
-
- completeConfig() {
- this.completedConfig++;
- this.updateProgress();
- }
-
- completeRun() {
- this.completedRuns++;
- this.updateProgress();
- }
-
- getProgress() {
- // Get time as soon as possible.
- const diff = process.hrtime(this.startTime);
-
- const completedRuns = this.completedRuns;
- const scheduledRuns = this.scheduledRuns;
- const finished = completedRuns === scheduledRuns;
-
- // Calculate numbers for fractions.
- const runsPerFile = this.runsPerFile;
- const completedFiles = Math.floor(completedRuns / runsPerFile);
- const scheduledFiles = this.benchmarks.length;
- const completedRunsForFile =
- finished ? runsPerFile : completedRuns % runsPerFile;
- const completedConfig = this.completedConfig;
- const scheduledConfig = this.scheduledConfig;
-
- // Calculate the percentage.
- let runRate = 0; // Rate of current incomplete run.
- if (completedConfig !== scheduledConfig) {
- runRate = completedConfig / scheduledConfig;
- }
- const completedRate = ((completedRuns + runRate) / scheduledRuns);
- const percent = pad(Math.floor(completedRate * 100), 3, ' ');
-
- const caption = finished ? 'Done\n' : this.currentFile;
- return `[${getTime(diff)}|% ${percent}| ` +
- `${fraction(completedFiles, scheduledFiles)} files | ` +
- `${fraction(completedRunsForFile, runsPerFile)} runs | ` +
- `${fraction(completedConfig, scheduledConfig)} configs]: ` +
- `${caption} `;
- }
-
- updateProgress() {
- if (!process.stderr.isTTY || process.stdout.isTTY) {
- return;
- }
- readline.clearLine(process.stderr);
- readline.cursorTo(process.stderr, 0);
- process.stderr.write(this.getProgress());
- }
-}
-
-module.exports = BenchmarkProgress;