That is a typical trade-off for high-level features: you incur a (constant factor) performance penalty to gain programmer productivity. If you need to avoid performance hits wherever possible, the language should give you an escape hatch; default behavior should make developing reliable software easier, not harder.