[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