There's caching all over the place so that you don't end up redoing the expensive stuff (ie creating attributed strings & CTLineRefs). It seems to work pretty well in terms of maintaining 60fps.
Unfortunately Xi was quite laggy in the scrolling department. Slower than VSCode for example.