[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Iterate over list and delete



On Sun, May 20, 2018 at 11:20 PM, Daniel Foerster <pydsigner@xxxxxxxxx> wrote:
I would guess that a significant amount of the gain is that he doesn't have to len() the list every iteration, plus the item unpacking occurs in C.
​`len(...)` should be constant-time (stored with array), but indeed caching it in a variable seems to help significantly.​ I think the fact that more of the algorithm occurs in C is the main driver, though. It also explains why the list comprehension is fastest.

It's also worth noting that the performance of all these algorithms is milliseconds or tens of milliseconds, even for thousands of elements. This means that which one is chosen probably doesn't matter—but it also means that the profiling is necessarily more-approximate. I'd hesitate to read too much into results on smaller element counts, even if they're fairly repeatable.
 
I don't know how much JIT would affect anything unless you ran the tests in PyPy.
​This was incorrect terminology on my part. I meant the interpreter, as my tests at least were in CPython. I was thinking of the optimizations that are done in the translation to bytecode, more than the fact that this is interpreted bytecode instead of executed machine code.

Ian