Actually, the main reasons why Esc is relatively slow IMO are:
- data model. While it is very simple and very effective, it is also quite slow (esp. the way how strings are stored).
- fact that it is interpreted based on source text only. on-the-fly compilation to intermediate language would make it faster, but would add thousands of lines.
Note that there are no reasons why Esc is slow in the Core (well, I have plans how to speed up String implementation, but there is nothing wrong with current one). In fact, Core almost never makes performance tradeoffs.