> Raymond Hettinger <python@rcn.com>: > > * Scanning my own sources, it looks like some of the builtins > > almost never appear inside loops (dir, map, filter, zip, dict, range). > > The ones that are in loops usually do something simple (int, str, > > chr, len). Either way, builtin access never seems to dominate > > the running time. OTOH, maybe that's just the way I write code. > [Greg Ewing] > That's probably true in the large. However, sometimes one has a tight > little loop that makes lots of calls to a builtin. I've occasionally > improved the speed of something noticeably using the > copy-a-builtin-to-a-local trick. It will have to wait until Py2.4 and the issue will likely be subsumed by more sophisticated approaches that optimize all namespace access. Jeremy's DList technique looks especially promising. Similarly, I'm experimenting with a dict subclass that keeps its values in lists of length one and can return the container for clients interested in fast get or set access to the value associated with a given key. Also, I've been working on a faster design for dictionaries that increases overall sparseness (meaning fewer collisions) while increasing the density of entries that fit in a single cash line (reducing the cost of a miss). Increasing density involves splitting the arrays of PyDictEntry into separate arrays of hashes, keys, and values. Further, the entries are clustered into groups of up to 16 hash values that can fit in a single cache line. This also allows for a much tighter inner loop for the lookup function. Raymond Hettinger
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4