I have observed this also. My experience is that type annotations only slow things down, which was surprising. My theory is that types are always enforced at runtime (i.e. invoke a type check), but all functions are just compiled for given arguments as needed. Not saying you should never check those types, but you save time by just leaving it alone and letting the JIT do its thing. You just loose out on useful error messages.