Say that you use 10,000 statements in one call, out of a budget of 4000. Your code will be delayed two frames, then run again. End result: your peasants don’t change course quite as responsively (0.75s instead of 0.25s) and your building rate might be a bit slower (but that’s usually gold-limited, not time-limited), and you (and anyone playing against you) gets to play in a world that simulates 2-3x as fast, which is more fun than having to wait 20 seconds to see changes.
Maybe the limit isn’t quite right–would love more feedback on this–but after watching some playtesters playing against some really slow O(n^2) opponents, we thought it’d be nice to give a small advantage to efficient code and prevent slow code from degrading the player experience. I would hope that anyone trying to do something that really needs O(n^2) or worse solutions would find a way to not rerun their entire nested loop on every frame. You can see which items have changed in O(n) time each frame, for example, and just update your coin-gathering algorithms according to that.