Message157343
| Author |
anacrolix |
| Recipients |
anacrolix, giampaolo.rodola, meador.inge, nedbat, rhettinger |
| Date |
2012年04月02日.07:20:13 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1333351216.11.0.988829384465.issue14373@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
> * 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. |
|