Skip to content

Commit

Permalink
benchmark: make the benchmark tool work with Node 10
Browse files Browse the repository at this point in the history
Avoid using class fields in the benchmark tools since they are
not available in Node 10. This can be reverted when Node 10
reaches EOL.

PR-URL: #35817
Reviewed-By: Daijiro Wachi <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Yongsheng Zhang <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Mary Marchini <[email protected]>
  • Loading branch information
joyeecheung authored and targos committed Nov 4, 2020
1 parent 9b549c1 commit 76ebae4
Showing 1 changed file with 20 additions and 20 deletions.
40 changes: 20 additions & 20 deletions benchmark/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ const child_process = require('child_process');
const http_benchmarkers = require('./_http-benchmarkers.js');

class Benchmark {
// Used to make sure a benchmark only start a timer once
#started = false;
constructor(fn, configs, options = {}) {
// Used to make sure a benchmark only start a timer once
this._started = false;

// Indicate that the benchmark ended
#ended = false;
// Indicate that the benchmark ended
this._ended = false;

// Holds process.hrtime value
#time = [0, 0];
// Holds process.hrtime value
this._time = [0, 0];

// Use the file name as the name of the benchmark
name = require.main.filename.slice(__dirname.length + 1);
// Use the file name as the name of the benchmark
this.name = require.main.filename.slice(__dirname.length + 1);

// Execution arguments i.e. flags used to run the jobs
flags = process.env.NODE_BENCHMARK_FLAGS ?
process.env.NODE_BENCHMARK_FLAGS.split(/\s+/) :
[];
// Execution arguments i.e. flags used to run the jobs
this.flags = process.env.NODE_BENCHMARK_FLAGS ?
process.env.NODE_BENCHMARK_FLAGS.split(/\s+/) :
[];

constructor(fn, configs, options = {}) {
// Parse job-specific configuration from the command line arguments
const argv = process.argv.slice(2);
const parsed_args = this._parseArgs(argv, configs, options);
Expand Down Expand Up @@ -214,21 +214,21 @@ class Benchmark {
}

start() {
if (this.#started) {
if (this._started) {
throw new Error('Called start more than once in a single benchmark');
}
this.#started = true;
this.#time = process.hrtime();
this._started = true;
this._time = process.hrtime();
}

end(operations) {
// Get elapsed time now and do error checking later for accuracy.
const elapsed = process.hrtime(this.#time);
const elapsed = process.hrtime(this._time);

if (!this.#started) {
if (!this._started) {
throw new Error('called end without start');
}
if (this.#ended) {
if (this._ended) {
throw new Error('called end multiple times');
}
if (typeof operations !== 'number') {
Expand All @@ -244,7 +244,7 @@ class Benchmark {
elapsed[1] = 1;
}

this.#ended = true;
this._ended = true;
const time = elapsed[0] + elapsed[1] / 1e9;
const rate = operations / time;
this.report(rate, elapsed);
Expand Down

0 comments on commit 76ebae4

Please sign in to comment.