Subject: Re: bug#77961: 31.0.50; Rendering HTML email is very slow since commit #eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5

From: Iñigo Serna <[email-masked]>
Date: Tue, 22 Apr 2025 09:28:38 +0200

Hi,

On 22 April 2025 at 09:10 +02, Gerd Möllmann 
<[email-masked]> wrote:

> Maybe comparing a before/after profile could show something.

I attach a profiler report of opening the same HTML email with 
commit
#eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5 reverted (ie, no memset, 
 no
for-loop either).

I attached an HTML sample file in a past message.
Opening it inside eww produces a similar slowdown on my system, 
maybe a
bit shorter (~3-4 sec).  Without memset or for-loop is almost
instantaneous.

Thanks,
Iñigo Serna

> Ihor Radchenko <[email-masked]> writes:
>
>> Gerd Möllmann <[email-masked]> writes:
>>>>>> I attach a profiler output, and a HTML file which causes a 
>>>>>> similar
>>>>>> slowdown when opening from eww.
>>>
>>> I'm afraid I don't see much in the profile. Only thing is that 
>>> that
>>> redisplay_internal isn't called often. Which makes it even 
>>> weirder that
>>> glyph matrix enlargement should play a role.
>>
>> Looking into reverse call tree (B), I see that
>>
>>         1874  33% + set-window-configuration
>>
>> takes 1/3 of CPU cycles. Looking into its source, it does deal 
>> with
>> glyph matrices. So, it is the suspect, judging from the 
>> submitted
>> profiler report.
>
> Thanks, indeed.
>
> Which I also find weird. Why is that done in the first place? 
> Anyway,
> that not leading to redisplays, how can adding a memset or 
> for-loop
> settign glyph::frame when adjusting matrices produce a 5x 
> slowdown,
> IIUC? I'm absolutely flabbergasted. That all doesn't add up.
>
> Maybe comparing a before/after profile could show something.