Can't do a multiline assignment!

Michael Torrie torriem at gmail.com
Thu Apr 17 19:34:07 CEST 2008


s0suk3 at gmail.com wrote:
> I do it with all the separate variables mainly for performance. If I
> had the headers in a dict, I'd be looking up a string in a list of
> strings (the keys of the dict) everytime I check for a header. Not
> that that's going to take more that 0.1 seconds, but the program is
> still small and simple. As it gets bigger, more features are gonna
> slow things down.

As I just said in my other post, this is all premature optimization.
Make your program simple and clear up front, and then work on
spot-optimizations in the places that your code really is slow.
Premature optimization can kill you in terms of code reliability and
maintainability.  The rule of thumb is that 80% of your program's
execution time will be in 20% of the code.  Therefore you have to
profile the code and fine out exactly where this 20% is.  Then you can
optimize it.

Another thing to consider is that referencing a member of a class or
instance already *is* a dictionary lookup.  It's how python works.  Thus
dictionaries are optimized to be fast.  Since strings are immutable,
python hashes them into a fast lookup pointer.  So every time you say
mydict["mykey"], it already knows the lookup pointer (hash) for "mykey"
(the string) and can find the dictionary entry very quickly, ideally in
O(1) time (well maybe log(N)).  Thus putting your headers in a
dictionary is actually a really good idea for performance reasons.



More information about the Python-list mailing list