Matt Joiner <anacro...@gmail.com> added the comment: > * it incorporate the recent lru_cache algorithmic updates (moving the root > around the circular queue to re-use old links).
The existing C patch already does this. > * it shows which parts should be implemented in C using a regular type and > shows how to call it from pure python. The existing patch already did this. > * it gives hints on use of #defines and PyDict_GetItem I'm familiar with C. I've retained PyDict_GetItemWithError so as not to suppress typing errors from keys constructed from bad arguments from the user. > * the critical sections are marked so you can use the GIL rather than using > locks. The existing patch is already using the GIL, it didn't have any locks. > * there are hints for what datatypes to use (only the hits and misses need > the ability to grow beyond sys.maxsize). The existing patch already had this. > * it shows how to access the named tuple from within the C code (using a > straight PyObject_Call). I incorporated this. > * this code passes the test suite and should be directly translatable (and > very fast). So did the old code. > * please follow the model and use PyList objects instead of C structure for > links I've left this as is, the linked list in C is idiomatic, avoids a lot of branching and reference counting and is also more readable than the equivalent C/Python. ---------- Added file: http://bugs.python.org/file25094/functools.lru_cache-in-c.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue14373> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com