[pypy-commit] extradoc extradoc: make it possible to benchmark a single version; add more slides
antocuni
pypy.commits at gmail.com
Mon Jul 10 18:53:57 EDT 2017
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: extradoc
Changeset: r5808:e409253e059c
Date: 2017-07-10 16:29 +0200
http://bitbucket.org/pypy/extradoc/changeset/e409253e059c/
Log: make it possible to benchmark a single version; add more slides
diff --git a/talk/ep2017/the-joy-of-pypy-jit/sobel/benchall.py b/talk/ep2017/the-joy-of-pypy-jit/sobel/benchall.py
--- a/talk/ep2017/the-joy-of-pypy-jit/sobel/benchall.py
+++ b/talk/ep2017/the-joy-of-pypy-jit/sobel/benchall.py
@@ -1,16 +1,23 @@
+import sys
import time
import pypytools
from mplayer import mplayer
import v0, v1, v2, v3
def bench():
+ if len(sys.argv) == 2:
+ v = sys.argv[1]
+ versions = [globals()[v]]
+ else:
+ versions = [v0, v1, v2, v3]
+
if pypytools.IS_PYPY:
max_frames = 200
else:
max_frames = 10
fn = 'test.avi -benchmark'
- for v in (v0, v1, v2, v3):
+ for v in versions:
start = time.time()
for i, img in enumerate(mplayer(fn)):
out = v.sobel(img)
diff --git a/talk/ep2017/the-joy-of-pypy-jit/sobel/main.py b/talk/ep2017/the-joy-of-pypy-jit/sobel/main.py
--- a/talk/ep2017/the-joy-of-pypy-jit/sobel/main.py
+++ b/talk/ep2017/the-joy-of-pypy-jit/sobel/main.py
@@ -16,10 +16,10 @@
start = start0 = time()
for fcnt, img in enumerate(mplayer(fn)):
- #out = v0.sobel(img)
+ out = v0.sobel(img)
#out = v1.sobel(img)
#out = v2.sobel(img)
- out = v3.sobel(img)
+ #out = v3.sobel(img)
try:
view(out)
diff --git a/talk/ep2017/the-joy-of-pypy-jit/talk.rst b/talk/ep2017/the-joy-of-pypy-jit/talk.rst
--- a/talk/ep2017/the-joy-of-pypy-jit/talk.rst
+++ b/talk/ep2017/the-joy-of-pypy-jit/talk.rst
@@ -126,3 +126,45 @@
|end_scriptsize|
+Version 0, demo
+---------------
+
+Demo
+
+|pause|
+
+PyPy is ~23x faster. Cool.
+
+
+Version 1
+---------
+
+|scriptsize|
+
+.. sourcecode:: python
+
+ def get(img, x, y):
+ w, h, data = img
+ i = x + y*w
+ return data[i]
+
+ def set(img, x, y, value):
+ w, h, data = img
+ i = x + y*w
+ data[i] = value
+
+ def sobel(img):
+ w, h, data = img
+ out = w, h, array.array('B', [0]) * (w*h)
+ for y in xrange(1, h-1):
+ for x in xrange(1, w-1):
+ dx = (-1.0 * get(img, x-1, y-1) +
+ 1.0 * get(img, x+1, y-1) +
+ -2.0 * get(img, x-1, y) +
+ 2.0 * get(img, x+1, y) +
+ -1.0 * get(img, x-1, y+1) +
+ 1.0 * get(img, x+1, y+1))
+ dy = ...
+ ...
+
+|end_scriptsize|
More information about the pypy-commit
mailing list