At least for me, the rank order of buffer+acf
vs. filters persists, but GUI Emacs is just much slower for some reason.
ns_select does a bunch of random things I haven't totally grokked, but
it shouldn't be _that_ bad.
I replaced my macbook pro many years ago, but AFAIK it's still true that ns_select() has a bunch of known infelicities. There used to be a small variety of patches floating around that helped in various situations, but I stopped following before the rise of heavy LSP/json/subprocesses. If you want to start looking into the topic, I would suggest starting with the Mac port, because it had (and I assume still does) tried to address the issue from a variety of approaches.
I guess this is a long way of saying "if you're interested, also try it with the Mac port". (I'm not in a position to try it myself.)
I hope this helps,
~Chad