On Thu, Nov 5, 2009 at 6:30 PM, geremy condra firstname.lastname@example.org wrote:
I'm testing the speed because the claim was made that the pop/add approach was inefficient. Here's the full quote:
The obvious way, for newcomers, of achieving the effect is:
x = s.pop() s.add(x)
... and that's simply horrible in terms of efficiency. So the "obvious" way of doing it in Python is wrong(TM), and the "correct" way of doing it is obscure and raises misleading exceptions.
I was talking mainly from a theoretical standpoint, and because the library I'm working on is designed to work seamlessly over the network. In those cases, where the set the user is working with is actually a proxy object across the wire, the time to acquire the locks, remove the object, release the locks, reacquire the locks, add the object, then rerelease the locks is *significantly* more expensive than just noting the set hasn't changed and returning a cached object from it.