Subject: Re: bug#69773: 29.2; Emacs Crashes on Startup Sometimes

From: Stephen Molitor <[email-masked]>
Date: Fri, 15 Mar 2024 09:32:32 -0500

Thanks for the benchmarking function. Here are the results I get running it three times on a fresh start of Emacs on src/xdisp.c:

with smart kerning:
GCs: 2 Elapsed time: 14.546864 seconds
GCs: 1 Elapsed time: 9.899920 seconds
GCs: 1 Elapsed time: 9.880759 seconds

without smart kerning
GCs: 2 Elapsed time: 12.188979 seconds
GCs: 0 Elapsed time: 7.264108 seconds
GCs: 1 Elapsed time: 7.346031 seconds

So it’s about a third slower. The difference is noticable.

> Btw, why aren't digit characters 0-9 in the regexp you use in sm-safe-table?  More generally, why not all of the ASCII characters are there? isn't smart kerning performed for them as well?  Come to think about that, what about Latin non-ASCII characters like á etc.?

The font I’m using, Commit Mono, only does smart kerning on a limited set of characters:

https://github.com/eigilnikolajsen/commit-mono/blob/main/src/features/kern_smartkerning.fea￼
commit-mono/src/features/kern_smartkerning.fea at main · eigilnikolajsen/commit-mono
github.com

> On Mar 15, 2024, at 2:46 AM, Eli Zaretskii <[email-masked]> wrote:
> 
>> From: Stephen Molitor <[email-masked]>
>> Date: Thu, 14 Mar 2024 17:10:37 -0500
>> 
>> Not that I’ve noticed.
>> 
>> I mean maybe it does, but I haven’t noticed. I have a fast machine. Is there an easy way to measure?
> 
> Yes, of course.  Here's one example:
> 
>  (defun scroll-up-benchmark ()
>    (interactive)
>    (let ((oldgc gcs-done)
> 	  (oldtime (float-time)))
>      (condition-case nil (while t (scroll-up) (redisplay))
> 	(error (message "GCs: %d Elapsed time: %f seconds"
> 			(- gcs-done oldgc) (- (float-time) oldtime))))))
> 
> Run this on a large file (I use src/xdisp.c) with and without your
> set-char-table-range customization, and compare the results.
> 
> Btw, why aren't digit characters 0-9 in the regexp you use in
> sm-safe-table?  More generally, why not all of the ASCII characters
> are there? isn't smart kerning performed for them as well?  Come to
> think about that, what about Latin non-ASCII characters like á etc.?