Subject: Re: bug#32932: 27.0.50; render bugs on macOS Mojave

From: Aaron Jensen <[email-masked]>
Date: Mon, 10 Feb 2020 09:14:13 -0800

On Mon, Feb 10, 2020 at 7:21 AM Aaron Jensen <[email-masked]> wrote:
>
> On Sun, Feb 9, 2020 at 11:44 PM Alan Third <[email-masked]> wrote:
> >
> > Anyway, one last thing to try. I was reading up on how MacVim handled
> > this same issue, and while their drawing techniques are quite
> > different, they did find performance problems with CGLayers so
> > switched to using CGImages. I’ve given that a go and I don’t think
> > this patch is quite as fast here as the CGLayer one, but it may be
> > faster for you.
>
> 9.6s, which is around what 26 macport is, twice as slow as 27, but
> about 1/4 the time it took with previous versions of 28. It also
> doesn't seem to slow down too much (12.8) when I go full width. It's
> still usable, for sure.

Some more numbers for posterity, using:

(defun scroll-up-benchmark ()
  (interactive)
  (setq frames 0)
  (let ((oldgc gcs-done)
        (oldtime (float-time)))
    (condition-case nil (while t (setq frames (1+ frames)) (scroll-up)
(redisplay))
      (error (message "GCs: %d Elapsed time: %f seconds %d frames %f fps"
                      (- gcs-done oldgc) (- (float-time) oldtime)
frames (/ frames (- (float-time) oldtime)))))))

Emacs 27: 123 FPS (this is faster than my previously reported times
which were only the first run, the 2nd run was 2.16s)
Emacs 28 with CGImage: 28 FPS
Emacs 26 macport: 30 FPS

So, it's still quite a bit slower, but it's usable and it likely won't glitch.

Aaron