Message157343
> * 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. |
|
Date |
User |
Action |
Args |
2012-04-02 07:20:16 | anacrolix | set | recipients:
+ anacrolix, rhettinger, giampaolo.rodola, nedbat, meador.inge |
2012-04-02 07:20:16 | anacrolix | set | messageid: <1333351216.11.0.988829384465.issue14373@psf.upfronthosting.co.za> |
2012-04-02 07:20:15 | anacrolix | link | issue14373 messages |
2012-04-02 07:20:14 | anacrolix | create | |
|