Author: Antonio Cuni <anto.c...@gmail.com> Branch: extradoc Changeset: r5813:6ed1dcda3cd7 Date: 2017-07-12 10:32 +0200 http://bitbucket.org/pypy/extradoc/changeset/6ed1dcda3cd7/
Log: make v4 and v5 more similar to v3 diff --git a/talk/ep2017/the-joy-of-pypy-jit/sobel/v4.py b/talk/ep2017/the-joy-of-pypy-jit/sobel/v4.py --- a/talk/ep2017/the-joy-of-pypy-jit/sobel/v4.py +++ b/talk/ep2017/the-joy-of-pypy-jit/sobel/v4.py @@ -1,6 +1,6 @@ import array from math import sqrt -from v2 import Image +from v3 import Image class Kernel(object): @@ -9,11 +9,11 @@ self.width = len(matrix[0]) self.matrix = matrix - def __call__(self, img, x, y): + def __call__(self, img, p): value = 0.0 for j, row in enumerate(self.matrix, -(self.height/2)): for i, k in enumerate(row, -(self.width/2)): - value += img[x+i, y+j] * k + value += img[p + (i, j)] * k return value @@ -31,10 +31,9 @@ """ img = Image(*img) out = Image(img.width, img.height) - for y in xrange(1, img.height-1): - for x in xrange(1, img.width-1): - dx = Gx(img, x, y) - dy = Gy(img, x, y) - value = min(int(sqrt(dx*dx + dy*dy) / 2.0), 255) - out[x, y] = value + for p in img.noborder(): + dx = Gx(img, p) + dy = Gy(img, p) + value = min(int(sqrt(dx*dx + dy*dy) / 2.0), 255) + out[p] = value return out diff --git a/talk/ep2017/the-joy-of-pypy-jit/sobel/v5.py b/talk/ep2017/the-joy-of-pypy-jit/sobel/v5.py --- a/talk/ep2017/the-joy-of-pypy-jit/sobel/v5.py +++ b/talk/ep2017/the-joy-of-pypy-jit/sobel/v5.py @@ -1,19 +1,19 @@ import array from math import sqrt -from v2 import Image +from v3 import Image from pypytools.codegen import Code def Kernel(matrix): height = len(matrix) width = len(matrix[0]) code = Code() - with code.block('def apply(img, x, y):'): + with code.block('def apply(img, p):'): code.w('value = 0.0') for j, row in enumerate(matrix, -(height/2)): for i, k in enumerate(row, -(width/2)): if k == 0: continue - code.w('value += img[x+{i}, y+{j}] * {k}', i=i, j=j, k=k) + code.w('value += img[p+{delta}] * {k}', delta=(i, j), k=k) code.w('return value') # code.compile() @@ -29,14 +29,13 @@ def sobel(img): """ - Like v3, but with a generic Kernel class + Like v4, but unrolling the Kernel loop """ img = Image(*img) out = Image(img.width, img.height) - for y in xrange(1, img.height-1): - for x in xrange(1, img.width-1): - dx = Gx(img, x, y) - dy = Gy(img, x, y) - value = min(int(sqrt(dx*dx + dy*dy) / 2.0), 255) - out[x, y] = value + for p in img.noborder(): + dx = Gx(img, p) + dy = Gy(img, p) + value = min(int(sqrt(dx*dx + dy*dy) / 2.0), 255) + out[p] = value return out _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit