diff options
Diffstat (limited to 'tools/throughput_benchmark.py')
-rwxr-xr-x | tools/throughput_benchmark.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tools/throughput_benchmark.py b/tools/throughput_benchmark.py new file mode 100755 index 000000000..be3278b57 --- /dev/null +++ b/tools/throughput_benchmark.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# Copyright 2018 the Deno authors. All rights reserved. MIT license. +# Performs benchmark and append data to //website/data.json. +# If //website/data.json doesn't exist, this script tries to import it from gh-pages branch. +# To view the results locally run ./tools/http_server.py and visit +# http://localhost:4545/website + +import os +import sys +import util +import time +import subprocess + +MB = 1024 * 1024 +ADDR = "127.0.0.1:4544" + + +def cat(deno_exe, megs): + size = megs * MB + start = time.time() + cmd = deno_exe + " tests/cat.ts /dev/zero | head -c %s " % size + print cmd + subprocess.check_output(cmd, shell=True) + end = time.time() + return end - start + + +def tcp(deno_exe, megs): + size = megs * MB + # Run deno echo server in the background. + echo_server = subprocess.Popen( + [deno_exe, "--allow-net", "tests/echo_server.ts", ADDR]) + + time.sleep(1) # wait for deno to wake up. TODO racy. + try: + start = time.time() + cmd = ("head -c %s /dev/zero " % size) + "| nc " + ADDR.replace( + ":", " ") + print cmd + subprocess.check_output(cmd, shell=True) + end = time.time() + return end - start + finally: + echo_server.kill() + + +if __name__ == '__main__': + deno_exe = sys.argv[1] + megs = int(sys.argv[2]) + if not deno_exe or not megs: + print "Usage ./tools/throughput_benchmark.py out/debug/deno 100" + sys.exit(1) + secs = tcp_throughput_benchmark(sys.argv[1], megs) + print secs, "seconds" |