From 52e761cebe838c3cb3551ebc4df0f01d8aa42331 Mon Sep 17 00:00:00 2001 From: Marvin Scham Date: Fri, 26 Aug 2022 08:56:35 +0200 Subject: [PATCH] Added benchmark results --- .prettierignore | 1 + benchmarks/Benchmarks.xlsx | Bin 0 -> 26330 bytes benchmarks/README.md | 40 +++++++++++++++++++ benchmarks/benchmark.py | 76 +++++++++++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 .prettierignore create mode 100644 benchmarks/Benchmarks.xlsx create mode 100644 benchmarks/README.md diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b7f9f66 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +benchmark.py \ No newline at end of file diff --git a/benchmarks/Benchmarks.xlsx b/benchmarks/Benchmarks.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..eb24aa3b4d09a4c2cc735eb2bdf69303a38ecea0 GIT binary patch literal 26330 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 literal 0 HcmV?d00001 diff --git a/benchmarks/README.md b/benchmarks/README.md new file mode 100644 index 0000000..425bff1 --- /dev/null +++ b/benchmarks/README.md @@ -0,0 +1,40 @@ +# Benchmarks + +## Konfiguration + +_Angelehnt an Pierre Quentels [Brython Benchmarking 2015](https://brythonista.wordpress.com/2015/03/28/comparing-the-speed-of-cpython-brython-skulpt-and-pypy-js/)_ + +- Windows 10 64-bit +- Firefox 104.0 64-bit +- Neuste Version des jeweiligen Frameworks +- 5 Läufe pro Framework +- Neustart und Leerung jeglicher Caches nach jedem Lauf +- Geometrisches Mittel der 5 Versuche + +## Ergebnisse + +- CPython 3.10.6 +- [Skulpt 1.3.0 @ Python 2.6(ish)](https://skulpt.org/) +- [PyPy.js v0.4.0 @ Python 2.7.9](https://pypyjs.org/) +- [Brython 3.10.0 @ Python 3.10.6](https://brython.info/console.html) +- [Pyodide 0.21.1 @ Python 3.10.2](https://pyodide.org/en/stable/console.html) +- [PyScript 2022.06.1 @ Python 3.10.2](https://pyscript.net/examples/repl.html) + +_Alle Messergebnisse inkl. Berechnung sind in `Benchmarks.xlsx` zu finden._ + +```text + Ausführungszeit (ms) | x-mal langsamer als CPython + CPython Skulpt PyPy.js Brython Pyodide PyScript | Skulpt PyPy.js Brython Pyodide PyScript +assignment.py 47 1711 1602 1242 221 194 | 36.4 34.1 26.4 4.7 4.1 +augm_assign.py 97 2919 1828 2116 378 325 | 30.1 18.8 21.8 3.9 3.4 +assignment_float.py 44 1707 1505 1306 234 195 | 38.8 34.2 29.7 5.3 4.4 +build_dict.py 112 2301 2142 2071 466 437 | 20.5 19.1 18.5 4.2 3.9 +set_dict_item.py 67 1824 2182 1455 347 320 | 27.2 32.6 21.7 5.2 4.8 +build_list.py 84 1924 1527 1302 440 412 | 22.9 18.2 15.5 5.2 4.9 +set_list_item.py 73 2264 1455 1432 342 307 | 31.0 19.9 19.6 4.7 4.2 +add_integers.py 106 4232 1743 2298 436 381 | 39.9 16.4 21.7 4.1 3.6 +add_strings.py 154 3155 1760 3440 627 575 | 20.5 11.4 22.3 4.1 3.7 +str_of_int.py 23 553 189 131 104 103 | 24.0 8.2 5.7 4.5 4.5 +create_function.py 114 2862 1521 2047 526 479 | 25.1 13.3 18.0 4.6 4.2 +function_call.py 117 2363 1387 2090 457 385 | 20.2 11.9 11.9 3.9 3.3 +``` diff --git a/benchmarks/benchmark.py b/benchmarks/benchmark.py index 26124c2..638c144 100644 --- a/benchmarks/benchmark.py +++ b/benchmarks/benchmark.py @@ -1,4 +1,80 @@ src = """import time\n\nt0 = time.time()\nfor i in range(1000000):\n a = 1\nprint("assignment.py", time.time()-t0)\n\nt0 = time.time()\na = 0\nfor i in range(1000000):\n a += 1\nprint("augm_assign.py", time.time()-t0)\n\nt0 = time.time()\nfor i in range(1000000):\n a = 1.0\nprint("assignment_float.py", time.time()-t0)\n\nt0 = time.time()\nfor i in range(1000000):\n a = {0:0}\nprint("build_dict.py", time.time()-t0)\n\nt0 = time.time()\na = {0:0}\n\nfor i in range(1000000):\n a[0] = i\n\nassert a[0]==999999\nprint("set_dict_item.py", time.time()-t0)\n\nt0 = time.time()\nfor i in range(1000000):\n a = [1, 2, 3]\nprint("build_list.py", time.time()-t0)\n\nt0 = time.time()\na = [0]\n\nfor i in range(1000000):\n a[0] = i\nprint("set_list_item.py", time.time()-t0)\n\nt0 = time.time()\na, b, c = 1, 2, 3\nfor i in range(1000000):\n a + b + c\nprint("add_integers.py", time.time()-t0)\n\nt0 = time.time()\na, b, c = 'a', 'b', 'c'\nfor i in range(1000000):\n a + b + c\nprint("add_strings.py", time.time()-t0)\n\nt0 = time.time()\nfor _i in range(100000):\n str(_i)\nprint("str_of_int.py", time.time()-t0)\n\nt0 = time.time()\nfor i in range(1000000):\n def f():\n pass\nprint("create_function.py", time.time()-t0)\n\nt0 = time.time()\ndef f(x):\n return x\nfor i in range(1000000):\n f(i)\nprint("function_call.py", time.time()-t0)\n\n""" exec(src) +# Expanded for Skulpt + +import time + +t0 = time.time() +for i in range(1000000): + a = 1 +print("assignment.py", time.time()-t0) + +t0 = time.time() +a = 0 +for i in range(1000000): + a += 1 +print("augm_assign.py", time.time()-t0) + +t0 = time.time() +for i in range(1000000): + a = 1.0 +print("assignment_float.py", time.time()-t0) + +t0 = time.time() +for i in range(1000000): + a = {0:0} +print("build_dict.py", time.time()-t0) + +t0 = time.time() +a = {0:0} + +for i in range(1000000): + a[0] = i + +assert a[0]==999999 +print("set_dict_item.py", time.time()-t0) + +t0 = time.time() +for i in range(1000000): + a = [1, 2, 3] +print("build_list.py", time.time()-t0) + +t0 = time.time() +a = [0] + +for i in range(1000000): + a[0] = i +print("set_list_item.py", time.time()-t0) + +t0 = time.time() +a, b, c = 1, 2, 3 +for i in range(1000000): + a + b + c +print("add_integers.py", time.time()-t0) + +t0 = time.time() +a, b, c = 'a', 'b', 'c' +for i in range(1000000): + a + b + c +print("add_strings.py", time.time()-t0) + +t0 = time.time() +for _i in range(100000): + str(_i) +print("str_of_int.py", time.time()-t0) + +t0 = time.time() +for i in range(1000000): + def f(): + pass +print("create_function.py", time.time()-t0) + +t0 = time.time() +def f(x): + return x +for i in range(1000000): + f(i) +print("function_call.py", time.time()-t0) + # Source: http://brython.info/speed/bench_str_pypy.txt