diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | tools/benchmark.py | 14 | ||||
-rw-r--r-- | website/all_benchmark.html | 47 | ||||
-rw-r--r-- | website/app.js | 18 | ||||
-rw-r--r-- | website/index.html | 8 |
5 files changed, 75 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore index bd850eb16..98b064c7e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ node_modules /gh-pages # temp benchmark data /website/data.json +/website/recent.json diff --git a/tools/benchmark.py b/tools/benchmark.py index 856ee3c85..943883f8f 100755 --- a/tools/benchmark.py +++ b/tools/benchmark.py @@ -25,7 +25,8 @@ exec_time_benchmarks = [ ] gh_pages_data_file = "gh-pages/data.json" -data_file = "website/data.json" +all_data_file = "website/data.json" # Includes all benchmark data. +recent_data_file = "website/recent.json" # Includes recent 20 benchmark data. def read_json(filename): @@ -39,16 +40,16 @@ def write_json(filename, data): def import_data_from_gh_pages(): - if os.path.exists(data_file): + if os.path.exists(all_data_file): return try: run([ "git", "clone", "--depth", "1", "-b", "gh-pages", "https://github.com/denoland/deno.git", "gh-pages" ]) - shutil.copy(gh_pages_data_file, data_file) + shutil.copy(gh_pages_data_file, all_data_file) except: - write_json(data_file, []) # writes empty json data + write_json(all_data_file, []) # writes empty json data def get_binary_sizes(build_dir): @@ -157,7 +158,7 @@ def main(argv): run(["hyperfine", "--export-json", benchmark_file, "--warmup", "3"] + [ deno_path + " " + " ".join(args) for [_, args] in exec_time_benchmarks ]) - all_data = read_json(data_file) + all_data = read_json(all_data_file) benchmark_data = read_json(benchmark_file) sha1 = run_output(["git", "rev-parse", "HEAD"]).strip() new_data = { @@ -191,7 +192,8 @@ def main(argv): new_data["syscall_count"] = run_syscall_count_benchmark(deno_path) all_data.append(new_data) - write_json(data_file, all_data) + write_json(all_data_file, all_data) + write_json(recent_data_file, all_data[-20:]) if __name__ == '__main__': diff --git a/website/all_benchmark.html b/website/all_benchmark.html new file mode 100644 index 000000000..9512143fc --- /dev/null +++ b/website/all_benchmark.html @@ -0,0 +1,47 @@ +<!-- Copyright 2018 the Deno authors. All rights reserved. MIT license. --> +<!DOCTYPE html> +<html> +<head> + <title>all benchmark data | deno</title> + <link rel="stylesheet" href="https://unpkg.com/c3@0.6.7/c3.min.css"> + <link rel="stylesheet" href="style.css"> + <meta content='width=device-width, initial-scale=1.0' name='viewport' /> +</head> +<body> + <main> + <h1>all benchmark data</h1> + + <p><a href="./">back</a> + + <h2>Execution time</h2> + <div id="exec-time-chart"></div> + + <h2>Throughput</h2> + <div id="throughput-chart"></div> + + <h2>Req/Sec</h2> + <div id="req-per-sec-chart"></div> + + <h2>Executable size</h2> + <div id="binary-size-chart"></div> + + <h2>Thread count</h2> + <div id="thread-count-chart"></div> + + <h2>Syscall count</h2> + <div id="syscall-count-chart"></div> + + <h2>Travis</h2> + <div id="travis-compile-time-chart"></div> + </main> + <script src="https://unpkg.com/d3@5.7.0/dist/d3.min.js"></script> + <script src="https://unpkg.com/c3@0.6.7/c3.min.js"></script> + + <script type="module"> + import { drawCharts } from "./app.js"; + window.chartWidth = 800 + drawCharts("./data.json"); + </script> +</body> +</html> + diff --git a/website/app.js b/website/app.js index 8a2640b2f..c34cfc868 100644 --- a/website/app.js +++ b/website/app.js @@ -124,12 +124,17 @@ export function formatBytes(a, b) { return parseFloat((a / Math.pow(c, f)).toFixed(d)) + " " + e[f]; } +/** + * @param {string} id The id of dom element + * @param {any[][]} columns The columns data + * @param {string[]} categories The sha1 hashes (which work as x-axis values) + */ function gen2(id, categories, columns, onclick) { c3.generate({ bindto: id, size: { height: 300, - width: 375 + width: window.chartWidth || 375 // TODO: do not use global variable }, data: { columns, @@ -154,16 +159,19 @@ export function formatSeconds(t) { return a < 30 ? `${min} min` : `${min + 1} min`; } -export function main() { - drawChartsFromBenchmarkData(); +/** + * @param dataUrl The url of benchramk data json. + */ +export function drawCharts(dataUrl) { + drawChartsFromBenchmarkData(dataUrl); drawChartsFromTravisData(); } /** * Draws the charts from the benchmark data stored in gh-pages branch. */ -export async function drawChartsFromBenchmarkData() { - const data = await getJson("./data.json"); +export async function drawChartsFromBenchmarkData(dataUrl) { + const data = await getJson(dataUrl); const execTimeColumns = createExecTimeColumns(data); const throughputColumns = createThroughputColumns(data); diff --git a/website/index.html b/website/index.html index 7b3b2a05b..b5357b691 100644 --- a/website/index.html +++ b/website/index.html @@ -48,13 +48,17 @@ <h2>Travis</h2> How long for Travis CI to return a green status for pull requests. <div id="travis-compile-time-chart"></div> + + <h2>References</h2> + <p> <a href="./all_benchmark.html">All benchmark data</a> + </main> <script src="https://unpkg.com/d3@5.7.0/dist/d3.min.js"></script> <script src="https://unpkg.com/c3@0.6.7/c3.min.js"></script> <script type="module"> - import { main } from "./app.js"; - main(); + import { drawCharts } from "./app.js"; + drawCharts("./recent.json"); </script> </body> </html> |