| 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 | "$@"
|