On Fri, Dec 6, 2013 at 11:52 AM, John Ladasky <john_lada...@sbcglobal.net>wrote:
> On Friday, December 6, 2013 12:47:54 AM UTC-8, Robert Voigtländer wrote: > > > I try to squeeze out some performance of the code pasted on the link > below. > > http://pastebin.com/gMnqprST > Not that this will speed up your code but you have this: if not clockwise: s = start start = end end = s Python people would write: end, start = start, end You have quite a few if statements that involve multiple comparisons of the same variable. Did you know you can do things like this in python: >>> x = 4 >>> 2 < x < 7 True >>> x = 55 >>> 2 < x < 7 False > Several comments: > > 1) I find this program to be very difficult to read, largely because > there's a whole LOT of duplicated code. Look at lines 53-80, and lines > 108-287, and lines 294-311. It makes it harder to see what this algorithm > actually does. Is there a way to refactor some of this code to use some > shared function calls? > > 2) I looked up the "Bresenham algorithm", and found two references which > may be relevant. The original algorithm was one which computed good raster > approximations to straight lines. The second algorithm described may be > more pertinent to you, because it draws arcs of circles. > > http://en.wikipedia.org/wiki/Bresenham's_line_algorithm > http://en.wikipedia.org/wiki/Midpoint_circle_algorithm > > Both of these algorithms are old, from the 1960's, and can be implemented > using very simple CPU register operations and minimal memory. Both of the > web pages I referenced have extensive example code and pseudocode, and > discuss optimization. If you need speed, is this really a job for Python? > > 3) I THINK that I see some code -- those duplicated parts -- which might > benefit from the use of multiprocessing (assuming that you have a > multi-core CPU). But I would have to read more deeply to be sure. I need > to understand the algorithm more completely, and exactly how you have > modified it for your needs. > -- > https://mail.python.org/mailman/listinfo/python-list > -- Joel Goldstick http://joelgoldstick.com
-- https://mail.python.org/mailman/listinfo/python-list