CPython String Interning

While reading through CPython code for the last post, I came across string interning and how it’s used as a method of optimisation. What is string interning? String interning is a CPython optimisation that enables python to reuse immutable string objects instead of creating new ones. Much like the interned integers I wrote about in the last post, interened strings can be compared using pointer checks instead of an actual string comparision. ...

January 17, 2021 · 2 min

Small integer caching in python

I noticed something interesting about python a=10 b=10 print(a is b) True But also, a=1000 b=1000 print(a is b) False The small integer cache Python (specifically CPython) pre-caches integers in the range -5 to 256 at interpreter startup. These integers are interned, meaning there’s only one shared object for each of them. So when you do: a = 42 b = 42 Both a and b point to the same memory address, because 42 is inside the small-int cache. That’s why a is b is True. ...

December 17, 2020 · 2 min