Cache common instances by ilevkivskyi · Pull Request #19621 · python/mypy

These few types account for a significant proportion of all types created:

  • str is just everywhere
  • object and function are used as fallbacks in many places
  • int and bool are coming from various literals

This gives around 1.5% performance improvement on my desktop. This is a bit ugly, but also looks like an easy win. Note that during semantic analysis I am caching types more conservatively, just in case some plugins modify them in place (named_type() is a part of semantic analyzer plugin interface).