summaryrefslogtreecommitdiff
path: root/tools/throughput_benchmark.py
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-10-11 16:55:22 -0400
committerGitHub <noreply@github.com>2018-10-11 16:55:22 -0400
commitc814d5a9140d88bf1633b74742e64436e1c75667 (patch)
tree71bd96c9f4cd566b5ae231990a8a4a7e7feff8c4 /tools/throughput_benchmark.py
parent51f9331ecb50afeafd0fa2ca8336e75aa374465e (diff)
Add throughput benchmark (#961)
Diffstat (limited to 'tools/throughput_benchmark.py')
-rwxr-xr-xtools/throughput_benchmark.py54
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"