I believe @jxxcarlson has ran into this before.
The root issue is that 0.18 will always box Char values so they can be distinguished from String at runtime. That is needed for toString to work properly, but it makes the parser much slower because it is boxing and unboxing when it looks at each Char.
There is a flag in my development version of Elm that switches to a more efficient runtime representation, so it will generate unboxed Char values. It should improve the performance of parsers quite a lot. So to answer your question:
Yes, but a little bit later.
In the meantime, even if you have 1000 times, I don’t imagine this being observable. Those strings are pretty short, so I suspect it is 30% of something quite small compared to what humans can observe. So I think I think it makes sense to keep going the parser route for now, even if it is still a bit slower in future releases.