Why a bottleneck? Static types don&#x27;t have to add any runtime overhead. In fact, the type information isn&#x27;t present at runtime at all in some languages. It&#x27;s a compile-time guarantee that actually allows you to remove some runtime checks and assertions. And I think all bechmarks show that static languages are as a rule faster than dynamic languages.<p>If you&#x27;re comparing two different designs in a statically language where one involves making lots of new types and the other just shuffles strings back and forth, then I can&#x27;t say and it&#x27;d depend on the specific case. Generally, helping the compiler is a good thing, and obviously things like switching on an enumeration is much faster than a long line of string comparisons. Actually, strings are just a horrible datatype, so unconstrained and inefficient. Use strings less!