3 Comments

Great post, thanks for writing! Makes me wonder how they chose the integer caching bounds

Expand full comment
author

I would be curious to know that story as well. I don't know if it's empirically tested against a set of benchmark programs, or if there's some other real-world justification for these specific bounds. I can see the upper bound having something to do with the frequent use of 255 or 256 in things like RGB color representations. It would be quite interesting to hear why -5 is the lower bound as opposed to -3 or something else.

Expand full comment

Yeah I was wondering the same thing about -5. Seems it's just based on how often those negative numbers are used. Unclear how rigorous the developers were in setting that bound. From GPT4:

> Most commonly used integers in programming fall within this range. Numbers from 0 to 255 represent all possible byte values, which are extensively used in computing tasks like bitwise operations, cryptography, image processing etc. On the lower end, negative integers down to -5 are also included since they frequently appear in many types of calculations, like in loop indexing and arithmetic operations.

> This choice is a design decision made by the Python (and subsequently Cython) developers and is generally tuned for typical usage patterns observed in Python code. Different languages may choose different ranges based on the typical use cases of those languages. For instance, Java caches integers from -128 to 127.

Expand full comment