diff --git a/tools/perf/README.md b/tools/perf/README.md index d77765628..a125cf61a 100644 --- a/tools/perf/README.md +++ b/tools/perf/README.md @@ -4,7 +4,7 @@ Perf testing Measure the performance impact of changes that you make to the fluent.js codebase. -Execution time is reported in microseconds (μs). +Execution time is reported in milliseconds (ms). The script measures the speed of parsing, compilation and getting all entities from a resource file based on Firefox OS's [Settings localization file][]. The @@ -65,7 +65,7 @@ significant, it will be show in green (faster) or red (slower). High Resolution Timer (HRT) --------------------------- -All numbers are reported in microseconds (μs) via node's +All numbers are reported in millisecods (ms) via node's [process.hrtime][] or SpiderMonkey shell's [dateNow][]. This allows to measure the time of a single operation. diff --git a/tools/perf/benchmark.d8.js b/tools/perf/benchmark.d8.js index 395858ddc..6010eb857 100644 --- a/tools/perf/benchmark.d8.js +++ b/tools/perf/benchmark.d8.js @@ -4,9 +4,9 @@ load('../../fluent-syntax/fluent-syntax.js'); var ftlCode = read('./workload-low.ftl'); var args = {} -function micro(time) { - // time is in milliseconds - return Math.round(time * 1000); +function ms(time) { + // time is in milliseconds with decimals + return Math.round(time * 1e3) / 1e3; } var times = {}; @@ -34,9 +34,9 @@ for (const [id, message] of ctx.messages) { times.formatEnd = Date.now(); var results = { - parseFTL: micro(times.ftlParseEnd - times.ftlParseStart), - parseFTLEntries: micro(times.ftlEntriesParseEnd - times.ftlEntriesParseStart), - format: micro(times.formatEnd - times.format), + "parse full AST (ms)": ms(times.ftlParseEnd - times.ftlParseStart), + "parse runtime AST (ms)": ms(times.ftlEntriesParseEnd - times.ftlEntriesParseStart), + "format (ms)": ms(times.formatEnd - times.format), }; print(JSON.stringify(results)); diff --git a/tools/perf/benchmark.jsshell.js b/tools/perf/benchmark.jsshell.js index c5a421731..5b05f7f09 100644 --- a/tools/perf/benchmark.jsshell.js +++ b/tools/perf/benchmark.jsshell.js @@ -4,9 +4,9 @@ load('../../fluent-syntax/fluent-syntax.js'); var ftlCode = read('./workload-low.ftl'); var args = {}; -function micro(time) { +function ms(time) { // time is in milliseconds with decimals - return Math.round(time * 1000); + return Math.round(time * 1e3) / 1e3; } var times = {}; @@ -34,9 +34,9 @@ for (const [id, message] of ctx.messages) { times.formatEnd = dateNow(); var results = { - parseFTL: micro(times.ftlParseEnd - times.ftlParseStart), - parseFTLEntries: micro(times.ftlEntriesParseEnd - times.ftlEntriesParseStart), - format: micro(times.formatEnd - times.format), + "parse full AST (ms)": ms(times.ftlParseEnd - times.ftlParseStart), + "parse runtime AST (ms)": ms(times.ftlEntriesParseEnd - times.ftlEntriesParseStart), + "format (ms)": ms(times.formatEnd - times.format), }; print(JSON.stringify(results)); diff --git a/tools/perf/benchmark.node.js b/tools/perf/benchmark.node.js index 623dd43c3..6cca05b96 100644 --- a/tools/perf/benchmark.node.js +++ b/tools/perf/benchmark.node.js @@ -8,9 +8,8 @@ var ftlCode = fs.readFileSync(__dirname + '/workload-low.ftl').toString(); var args = {}; -function micro(time) { - // time is [seconds, nanoseconds] - return Math.round((time[0] * 1e9 + time[1]) / 1000); +function ms([seconds, nanoseconds]) { + return Math.round((seconds * 1e9 + nanoseconds) / 1e3) / 1e3; } var cumulative = {}; @@ -39,8 +38,8 @@ for (const [id, message] of ctx.messages) { cumulative.formatEnd = process.hrtime(start); var results = { - parseFTL: micro(cumulative.ftlParseEnd) - micro(cumulative.ftlParseStart), - parseFTLEntries: micro(cumulative.ftlEntriesParseEnd) - micro(cumulative.ftlEntriesParseStart), - format: micro(cumulative.formatEnd) - micro(cumulative.format), + "parse full AST (ms)": ms(cumulative.ftlParseEnd) - ms(cumulative.ftlParseStart), + "parse runtime AST (ms)": ms(cumulative.ftlEntriesParseEnd) - ms(cumulative.ftlEntriesParseStart), + "format (ms)": ms(cumulative.formatEnd) - ms(cumulative.format), }; console.log(JSON.stringify(results));