[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