I ran that benchmark and can let you know what's going on. The benchmark switches templates using conditionals.
So what is happening is:
1. On the first render, every template that is rendered gets prepared. And there is that 46% improvement.
2. On the second render, some code paths change and some new templates that haven't yet been rendered get rendered. This results in a smaller improvement.
Then over time, as different code paths are exercised, the improvements of compilation reduce as every template has been seen at least once.
So what is happening is:
1. On the first render, every template that is rendered gets prepared. And there is that 46% improvement. 2. On the second render, some code paths change and some new templates that haven't yet been rendered get rendered. This results in a smaller improvement.
Then over time, as different code paths are exercised, the improvements of compilation reduce as every template has been seen at least once.