Created
April 30, 2025 15:13
-
-
Save jrmuizel/bc82c393d6712e2ac84849487426f066 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import subprocess | |
| import os | |
| tests_with_workers = ["Air", "Basic", "ML", "Babylon", "cdjs", | |
| "first-inspector-code-load", "multi-inspector-code-load", | |
| "Box2D", "octane-code-load", "crypto", "delta-blue", | |
| "earley-boyer", "gbemu", "mandreel", "navier-stokes", | |
| "pdfjs", "raytrace", "regexp", "richards", "splay", | |
| "typescript", "octane-zlib", "FlightPlanner", "OfflineAssembler", | |
| "UniPoker", "async-fs", "float-mm.c", "hash-map", | |
| "ai-astar", "gaussian-blur", "stanford-crypto-aes", | |
| "stanford-crypto-pbkdf2", "stanford-crypto-sha256", | |
| "json-stringify-inspector", "json-parse-inspector", | |
| "HashSet-wasm", "tsf-wasm", "quicksort-wasm", "gcc-loops-wasm", | |
| "richards-wasm", "bomb-workers", "segmentation", "WSL", | |
| "3d-cube-SP", "3d-raytrace-SP", | |
| "base64-SP", "crypto-aes-SP", "crypto-md5-SP", | |
| "crypto-sha1-SP", "date-format-tofte-SP", "date-format-xparb-SP", | |
| "n-body-SP", "regex-dna-SP", "string-unpack-code-SP", | |
| "tagcloud-SP", "acorn-wtb", "babylon-wtb", "chai-wtb", | |
| "coffeescript-wtb", "espree-wtb", "jshint-wtb", "lebab-wtb", | |
| "prepack-wtb", "uglify-js-wtb"] | |
| tests = ["Air", "Basic", "ML", "Babylon", "cdjs", | |
| "first-inspector-code-load", "multi-inspector-code-load", | |
| "Box2D", "octane-code-load", "crypto", "delta-blue", | |
| "earley-boyer", "gbemu", "mandreel", "navier-stokes", | |
| "pdfjs", "raytrace", "regexp", "richards", "splay", | |
| "typescript", "octane-zlib", "FlightPlanner", "OfflineAssembler", | |
| "UniPoker", "async-fs", "float-mm.c", "hash-map", | |
| "ai-astar", "gaussian-blur", "stanford-crypto-aes", | |
| "stanford-crypto-pbkdf2", "stanford-crypto-sha256", | |
| "json-stringify-inspector", "json-parse-inspector", | |
| "HashSet-wasm", "tsf-wasm", "quicksort-wasm", "gcc-loops-wasm", | |
| "richards-wasm", | |
| "WSL", | |
| "3d-cube-SP", "3d-raytrace-SP", | |
| "base64-SP", "crypto-aes-SP", "crypto-md5-SP", | |
| "crypto-sha1-SP", "date-format-tofte-SP", "date-format-xparb-SP", | |
| "n-body-SP", "regex-dna-SP", "string-unpack-code-SP", | |
| "tagcloud-SP", "acorn-wtb", "babylon-wtb", "chai-wtb", | |
| "coffeescript-wtb", "espree-wtb", "jshint-wtb", "lebab-wtb", | |
| "prepack-wtb", "uglify-js-wtb"] | |
| tf = True | |
| field_types = True | |
| #tests=["prepack-wtb", "babylon-wtb"] | |
| #tests = ["stanford-crypto-pbkdf2", "stanford-crypto-sha256"] | |
| #tests = ["stanford-crypto-pbkdf2"] | |
| tests = ["OfflineAssembler"] | |
| for test in tests: | |
| sm_cmd = ["perf", "record", "-g", "-k", "mono", "-o", "sm.data", | |
| "/home/jrmuizel/src/gecko-dev/obj-js-nojitspew/dist/bin/js", | |
| "--enable-ic-frame-pointers", "--spectre-mitigations=off", | |
| "--only-inline-selfhosted", "--no-async-stacks", | |
| "-e", f"testList=[{test!r}]", "cli.js"] | |
| sm_before_cmd = ["perf", "record", "-g", "-k", "mono", "-o", "sm-before.data", | |
| "/home/jrmuizel/src/sm-before/obj-js-nojitspew/dist/bin/js", | |
| "--enable-ic-frame-pointers", "--spectre-mitigations=off", | |
| "--only-inline-selfhosted", "--no-async-stacks", | |
| "-e", f"testList=[{test!r}]", "cli.js"] | |
| sm_after_cmd = ["perf", "record", "-g", "-k", "mono", "-o", "sm-after.data", | |
| "/home/jrmuizel/src/sm-after/obj-js-nojitspew/dist/bin/js", | |
| "--enable-ic-frame-pointers", "--spectre-mitigations=off", | |
| "--only-inline-selfhosted", "--no-async-stacks", | |
| "-e", f"testList=[{test!r}]", "cli.js"] | |
| v8_cmd = ["perf", "record", "-g", "-k", "1", "-o", "v8.data", | |
| "/home/jrmuizel/src/v8/out/release/d8", "--perf-prof", | |
| "--interpreted-frames-native-stack", | |
| "--no-parallel-scavenge", | |
| "--allow-natives-syntax", "--no-turbo-inlining", | |
| "--no-maglev-inlining", "--no-compact-code-space", | |
| "-e", f"testList=[{test!r}]"] | |
| if not tf: | |
| v8_cmd.append("--no-turbofan") | |
| if not field_types: | |
| v8_cmd.append("--no-track-field-types") | |
| v8_cmd.append("cli.js") | |
| jsc_cmd = ["perf", "record", "-g", "-k", "1", "-o", "jsc.data", | |
| "/home/jrmuizel/src/WebKit/WebKitBuild/Release/bin/jsc", "--logJITCodeForPerf=true", "--maximumInliningDepth=1", "--useTailCalls=false", | |
| "-e", f"testList=[{test!r}]", "cli.js"] | |
| print(test) | |
| #subprocess.run(sm_cmd, env={"PERF_SPEW_DIR": ".", "IONPERF": "src"}) | |
| subprocess.run(sm_before_cmd, env={"PERF_SPEW_DIR": ".", "IONPERF": "src"}) | |
| subprocess.run(sm_after_cmd, env={"PERF_SPEW_DIR": ".", "IONPERF": "src"}) | |
| #subprocess.run(v8_cmd) | |
| #subprocess.run(jsc_cmd) | |
| samply_path = '/home/jrmuizel/src/samply/target/release/samply' | |
| # Start sm load process | |
| #sm_proc = subprocess.Popen([samply_path, 'import', '--fold-recursive-prefix', '--no-open', 'sm.data'], | |
| # stderr=subprocess.PIPE) | |
| #sm_pid = sm_proc.pid | |
| sm_before_proc = subprocess.Popen([samply_path, 'import', '--fold-recursive-prefix', '--no-open', 'sm-before.data', '-o', 'sm-before.json'], | |
| stderr=subprocess.PIPE) | |
| sm_before_pid = sm_before_proc.pid | |
| sm_after_proc = subprocess.Popen([samply_path, 'import', '--fold-recursive-prefix', '--no-open', 'sm-after.data', '-o', 'sm-after.json'], | |
| stderr=subprocess.PIPE) | |
| sm_after_pid = sm_after_proc.pid | |
| # Start v8 load process | |
| #v8_proc = subprocess.Popen([samply_path, 'import', '--fold-recursive-prefix', '--no-open', 'v8.data'], | |
| # stderr=subprocess.PIPE) | |
| #v8_pid = v8_proc.pid | |
| # Start jsc load process | |
| #jsc_proc = subprocess.Popen([samply_path, 'import', '--fold-recursive-prefix', '--no-open', 'jsc.data'], | |
| # stderr=subprocess.PIPE) | |
| #jsc_pid = jsc_proc.pid | |
| # Get output urls | |
| """ | |
| for i in range(3): | |
| print(sm_proc.stderr.readline()) | |
| sm_url = sm_proc.stderr.readline().decode().strip() | |
| for i in range(3): | |
| print(v8_proc.stderr.readline()) | |
| v8_url = v8_proc.stderr.readline().decode().strip() | |
| for i in range(3): | |
| print(jsc_proc.stderr.readline()) | |
| jsc_url = jsc_proc.stderr.readline().decode().strip() | |
| sm_url = sm_url.split(" ")[4] | |
| v8_url = v8_url.split(" ")[4] | |
| jsc_url = jsc_url.split(" ")[4] | |
| print(sm_url) | |
| print(v8_url) | |
| print(jsc_url) | |
| """ | |
| for i in range(3): | |
| print(sm_before_proc.stderr.readline()) | |
| sm_before_url = sm_before_proc.stderr.readline().decode().strip() | |
| for i in range(3): | |
| print(sm_after_proc.stderr.readline()) | |
| sm_after_url = sm_after_proc.stderr.readline().decode().strip() | |
| sm_before_url = sm_before_url.split(" ")[4] | |
| sm_after_url = sm_after_url.split(" ")[4] | |
| print(sm_before_url) | |
| print(sm_after_url) | |
| prefix = "" | |
| subprocess.run(['yarn', 'generate-report', 'JetStream' + prefix + '-' + test, '--root-js-func-prefix=runIteration', | |
| '--reference-profile', sm_before_url, | |
| '--alternative-profile', sm_after_url, | |
| '--base-path', '/home/jrmuizel/src/WebKit/PerformanceTests/JetStream2/'], cwd="/home/jrmuizel/src/comparison-report-generator") | |
| """ | |
| prefix = "" | |
| if not tf: | |
| prefix += "NoTF" | |
| if not field_types: | |
| prefix += "NoFieldTypes" | |
| subprocess.run(['yarn', 'generate-report', 'JetStream' + prefix + '-' + test, '--root-js-func-prefix=runIteration', | |
| '--reference-profile', sm_url, | |
| '--alternative-profile', v8_url, | |
| '--alternative2-profile', jsc_url, | |
| '--base-path', '/home/jrmuizel/src/WebKit/PerformanceTests/JetStream2/'], cwd="/home/jrmuizel/src/comparison-report-generator") | |
| """ | |
| # os.kill(sm_pid, 9) | |
| # os.kill(v8_pid, 9) | |
| print("Kill with ctrl-c") | |
| import time | |
| while True: | |
| time.sleep(100000) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment