1 | #!/usr/bin/env bash
|
2 | #
|
3 | # Summary: PyPy is slower than CPython for parsing. (I bet it also uses more
|
4 | # memory, although I didn't measure that.)
|
5 | #
|
6 | # I don't plan on using PyPy, but this is simple enough to save for posterity.
|
7 | #
|
8 | # Usage:
|
9 | # ./pypy.sh <function name>
|
10 |
|
11 | set -o nounset
|
12 | set -o pipefail
|
13 | set -o errexit
|
14 |
|
15 | readonly PYPY=~/install/pypy2-v5.9.0-linux64/bin/pypy
|
16 |
|
17 | readonly ABUILD=~/git/alpine/abuild/abuild
|
18 |
|
19 | parse-abuild() {
|
20 | local vm=$1
|
21 | local out=_tmp/pypy
|
22 | mkdir -p $out
|
23 |
|
24 | time $vm bin/oil.py osh \
|
25 | --dump-proc-status-to $out/proc-status.txt \
|
26 | -n $ABUILD >/dev/null
|
27 | }
|
28 |
|
29 | # ~3.5 seconds
|
30 | parse-with-cpython() {
|
31 | parse-abuild python
|
32 | }
|
33 |
|
34 | # ~4.8 seconds
|
35 | # NOTE: We could run it in a loop to see if the JIT warms up, but that would
|
36 | # only be for curiosity. Most shell processes are short-lived, so it's the
|
37 | # wrong thing to optimize for.
|
38 | parse-with-pypy() {
|
39 | parse-abuild $PYPY
|
40 | }
|
41 |
|
42 | "$@"
|