On Thu, Jul 30, 2009 at 11:32 AM, Tyler Laing <[email protected]> wrote:

> Hi,
>
> Well the first optimization that can be done is to use a lambda function
> and a list comprehension which performs the for loop at C speed will likely
> bring a huge benefit:
>
> #we use wrappers because blit and tick only return none, which makes
> functional programming a bit harder...
>
> f=lambda y: y if y.tick() else y
> g=lambda z: z.blit(SCREEN, -CAMERA_X)
>
> particles =[lambda x: f(x) if g(x) else f(x) for x in particles]
>
> Et voila! C-speed execution, O(n) run-time. All it looses is readability,
> and there's the slight overhead of the two lambda functions... and yes, that
> else clause is needed in there. Of course for actual production code, I'd
> assume one would use far more descriptive variables than I did.
>
> You have profiling this vs a normal for loop ?
Somehow, I would expect that in your cycle most of time would be spent in
.blit and .tick,  not the loop logic, wich is the only thing this mod speed
up.
--
claxo
--

Reply via email to