[pypy-commit] extradoc extradoc: a single generator lowers performace 2.2 times

hakanardo noreply at buildbot.pypy.org
Tue Jun 21 07:54:12 CEST 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: extradoc
Changeset: r3760:fc8d0cb366f8
Date: 2011-06-21 07:47 +0200
http://bitbucket.org/pypy/extradoc/changeset/fc8d0cb366f8/

Log:	a single generator lowers performace 2.2 times

diff --git a/talk/iwtc11/benchmarks/image/plain.py b/talk/iwtc11/benchmarks/image/plain.py
--- a/talk/iwtc11/benchmarks/image/plain.py
+++ b/talk/iwtc11/benchmarks/image/plain.py
@@ -26,6 +26,12 @@
     def __setitem__(self, (x, y), val):
         self.data[self._idx(x, y)] = val
 
+    def pixels(self, border=0):
+        for y in xrange(border, self.height-border):
+            for x in xrange(border, self.width-border):
+                yield x, y
+                
+
 def sobel_magnitude(a):
     b = Image(a.width, a.height, typecode='B')
     for y in xrange(1, a.height-1):
@@ -39,6 +45,18 @@
 
     return b
 
+def sobel_magnitude_generator(a):
+    b = Image(a.width, a.height, typecode='B')
+    for x, y in a.pixels(border=1):
+        dx = -1.0 * a[x-1, y-1] + 1.0 * a[x+1, y-1] + \
+             -2.0 * a[x-1, y]   + 2.0 * a[x+1, y] + \
+             -1.0 * a[x-1, y+1] + 1.0 * a[x+1, y+1]
+        dy = -1.0 * a[x-1, y-1] -2.0 * a[x, y-1] -1.0 * a[x+1, y-1] + \
+              1.0 * a[x-1, y+1] +2.0 * a[x, y+1] +1.0 * a[x+1, y+1]
+        b[x, y] = min(int(sqrt(dx*dx + dy*dy) / 4.0), 255)
+
+    return b
+
 if __name__ == '__main__':
     from io import mplayer, view
     import sys
@@ -60,6 +78,8 @@
     for fcnt, img in enumerate(mplayer(Image, fn)):
         #view(img)
         view(sobel_magnitude(img))
+        #view(sobel_magnitude_generator(img))
+        #sobel_magnitude_generator(img)
         #sobel_magnitude(img)
         print 1.0 / (time() - start), 'fps, ', (fcnt-2) / (time() - start0), 'average fps'
         start = time()


More information about the pypy-commit mailing list