On 4/7/06, Guido van Rossum <[EMAIL PROTECTED]> wrote: > Even with the cache I put in? The hairy algorithm doesn't get invoked > more than once per actual signature (type tuple).
OK, I timed this, and the @overloaded function (when it hits the cache) is indeed 4-7 times slower than a handwritten decision tree with about 5 cases (depending on which case gets hit). But I can make the @overloaded function twice as fast by in-lining the first few lines of find_func() and using a different expression for calculating the types tuple: tuple(map(type, args)) (despite allocating a throw-away list first) is more than twice as fast as tuple(type(a) for a in args) and that's where most of the time went. A bit of speedup also came from avoiding to call find_func() if there's a cache hit. So I think that with some additional effort and/or a tiny bit of C code, the speed issue *when the cache works* can be solved. Is the performance of the full-fledged algorithm really that much of an issue? -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com