Code view of a file (the one with syntax highlighting and lines) has really poor performance in Firefox #9720

Closed
opened 2025-11-02 08:47:36 -06:00 by GiteaMirror · 10 comments
Owner

Originally created by @ell1e on GitHub (Oct 21, 2022).

Description

The code view of a file (the one with syntax highlighting and lines) has really poor performance in Firefox. When I scroll, I often see a giant rectangle of black for the new part and it needs a second to render it. When I click any line number on the side, it takes up to a second to actually show the marking. Especially if I am searching for a specific line and scrolling fast, this makes it really hard to put up with this giant delay. Given the whole view is fairly static, this poor performance seems especially unfortunate.

Screenshots

Can't really screenshot it, test for yourself here: https://try.gitea.io/blablablablab/BlaTest/src/branch/main/test.py

Gitea Version

1.17.2+80-gc1f5473

Can you reproduce the bug on the Gitea demo site?

Yes

Operating System

Linux/GNOME 3

Browser Version

Mozilla Firefox 106

Originally created by @ell1e on GitHub (Oct 21, 2022). ### Description The code view of a file (the one with syntax highlighting and lines) has really poor performance in Firefox. When I scroll, I often see a giant rectangle of black for the new part and it needs a second to render it. When I click any line number on the side, it takes up to a second to actually show the marking. Especially if I am searching for a specific line and scrolling fast, this makes it really hard to put up with this giant delay. Given the whole view is fairly static, this poor performance seems especially unfortunate. ### Screenshots Can't really screenshot it, test for yourself here: https://try.gitea.io/blablablablab/BlaTest/src/branch/main/test.py ### Gitea Version 1.17.2+80-gc1f5473 ### Can you reproduce the bug on the Gitea demo site? Yes ### Operating System Linux/GNOME 3 ### Browser Version Mozilla Firefox 106
GiteaMirror added the topic/uitype/bug labels 2025-11-02 08:47:36 -06:00
Author
Owner

@ell1e commented on GitHub (Oct 21, 2022):

I just tested Opera, there's also quite a delay between clicking a line number marker and the colorful bar showing up. Scrolling is a little better, although it might also just be the file. (Is it by any chance worse when the lines have more contents per line and somehow related to syntax highlighting? Or I don't know what it is...)

@ell1e commented on GitHub (Oct 21, 2022): I just tested Opera, there's also quite a delay between clicking a line number marker and the colorful bar showing up. Scrolling is a little better, although it might also just be the file. (Is it by any chance worse when the lines have more contents per line and somehow related to syntax highlighting? Or I don't know what it is...)
Author
Owner

@delvh commented on GitHub (Oct 21, 2022):

  1. Yes, especially for larger files, performance will naturally somewhat suffer
  2. I can't reproduce your performance problem, for me everything there works smoothly.
    The interesting thing is: My setup is Linux KDE with Firefox 106, so it shouldn't be really too different from yours, unless the GNOME version has a problem the Qt version doesn't have…
@delvh commented on GitHub (Oct 21, 2022): 1. Yes, especially for larger files, performance will naturally somewhat suffer 2. I can't reproduce your performance problem, for me everything there works smoothly. The interesting thing is: My setup is Linux KDE with Firefox 106, so it shouldn't be really too different from yours, unless the GNOME version has a problem the Qt version doesn't have…
Author
Owner

@ell1e commented on GitHub (Oct 21, 2022):

Do you have a slower machine to try on? Performance really is horrible on that, maybe try a phone.

And GitHub is way faster if you compare these two:

https://try.gitea.io/blablablablab/BlaTest/src/branch/main/python_ast.c

https://github.com/python/cpython/blob/main/Python/Python-ast.c

On the Gitea one, when I clicked a line while it seemed to be still loading (also WAY slower than the GitHub copy btw, I saw the scrollbar shrink in a crawl as it pulled in the lower contents) there was no reaction for over 10 seconds!

After loading, GitHub line markers show up at maybe 0.5 seconds, Gitea 2 seconds or something.

Edit: it really seems like as long as the file is still loading, and on Gitea it seems to load for really long (20 seconds+) the line markers on Gitea just plain don't work. It ignores everything I click, even when I'm way above the part it's still pulling in. On GitHub, the entire view loads in two seconds or so and then it reacts fine.

@ell1e commented on GitHub (Oct 21, 2022): Do you have a slower machine to try on? Performance really is horrible on that, maybe try a phone. And GitHub is way faster if you compare these two: https://try.gitea.io/blablablablab/BlaTest/src/branch/main/python_ast.c https://github.com/python/cpython/blob/main/Python/Python-ast.c On the Gitea one, when I clicked a line while it seemed to be still loading (also WAY slower than the GitHub copy btw, I saw the scrollbar shrink in a crawl as it pulled in the lower contents) there was no reaction for over 10 seconds! After loading, GitHub line markers show up at maybe 0.5 seconds, Gitea 2 seconds or something. Edit: it really seems like as long as the file is still loading, and on Gitea it seems to load for *really* long (20 seconds+) the line markers on Gitea just plain don't work. It ignores everything I click, even when I'm way above the part it's still pulling in. On GitHub, the entire view loads in two seconds or so and then it reacts fine.
Author
Owner

@ell1e commented on GitHub (Oct 21, 2022):

A shot in the dark as for the slow loading: is Gitea maybe not caching this table structure and generating it live on every visit? Maybe that would be why it needs so much longer to send it out, since the HTML itself otherwise doesn't look too different to GitHub's.

@ell1e commented on GitHub (Oct 21, 2022): A shot in the dark as for the slow loading: is Gitea maybe not caching this table structure and generating it live on every visit? Maybe that would be why it needs so much longer to send it out, since the HTML itself otherwise doesn't look too different to GitHub's.
Author
Owner

@delvh commented on GitHub (Oct 21, 2022):

So, I just tried it on my mobile phone where I still can't reproduce the performance issue you mentioned.
Performance is well within the acceptable range there as well.

@delvh commented on GitHub (Oct 21, 2022): So, I just tried it on my mobile phone where I still can't reproduce the performance issue you mentioned. Performance is well within the acceptable range there as well.
Author
Owner

@ell1e commented on GitHub (Oct 21, 2022):

4x the reaction time for line markers to GitHub and 10x+ the time until all lines are loaded doesn't really make Gitea look good to me.

I also just tested on my super slow PinePhone, and the python_ast.c Gitea link above just plain crashes the tab. Always! The GitHub one doesn't look too good either by taking multiple minutes to finally render, but at least it works at all.

@ell1e commented on GitHub (Oct 21, 2022): 4x the reaction time for line markers to GitHub and 10x+ the time until all lines are loaded doesn't really make Gitea look good to me. I also just tested on my super slow PinePhone, and the `python_ast.c` Gitea link above just plain crashes the tab. Always! The GitHub one doesn't look too good either by taking multiple minutes to finally render, but at least it works at all.
Author
Owner

@echodreamz commented on GitHub (Oct 21, 2022):

Firefox on my machine (build 106.0.1) on Windows 10 opens your link just fine, no performance issues. Silky smooth. Firefox on my laptop (same build/OS) also runs just fine, same on my older Surface Pro 3, Firefox runs that file silky smooth. I do not have a Linux system to test on. Maybe you just have a very poor performing machine?

@echodreamz commented on GitHub (Oct 21, 2022): Firefox on my machine (build 106.0.1) on Windows 10 opens your link just fine, no performance issues. Silky smooth. Firefox on my laptop (same build/OS) also runs just fine, same on my older Surface Pro 3, Firefox runs that file silky smooth. I do not have a Linux system to test on. Maybe you just have a very poor performing machine?
Author
Owner

@ell1e commented on GitHub (Oct 21, 2022):

Well, obviously my machine is slow yes. But the problem isn't only that the file view is slow, but also how much slower than GitHub it is. The page load is way slower for some reason (just building up all the vertical page content), the time until any clicks work at all on the line number slider is way longer (on GitHub before loading finishes, on Gitea not before full page load), and once everything is loaded the delay for any click on the line number slider is still twice as slow to react.

I mean I get that you may have better things to fix. But given there is a clearly better performer here (GitHub), it seems like there would be something to fix here.

@ell1e commented on GitHub (Oct 21, 2022): Well, obviously my machine is slow yes. But the problem isn't only that the file view is slow, but also how much slower than GitHub it is. The page load is way slower for some reason (just building up all the vertical page content), the time until any clicks work at all on the line number slider is way longer (on GitHub before loading finishes, on Gitea not before full page load), and once everything is loaded the delay for any click on the line number slider is still twice as slow to react. I mean I get that you may have better things to fix. But given there is a clearly better performer here (GitHub), it seems like there would be something to fix here.
Author
Owner

@ell1e commented on GitHub (Oct 21, 2022):

I'm running into this on an aging Skylake laptop, so it's better than like a Raspberry Pi. While I'm guessing most devs have something faster, it usually does the job. And linking something from a 2K to 10K lines file on GitHub feels fast enough to not annoy me. On Gitea however, it's pretty tedious right now. (Enough that I noticed often enough to eventually make this ticket!)

@ell1e commented on GitHub (Oct 21, 2022): I'm running into this on an aging Skylake laptop, so it's better than like a Raspberry Pi. While I'm guessing most devs have something faster, it usually does the job. And linking something from a 2K to 10K lines file on GitHub feels fast enough to not annoy me. On Gitea however, it's pretty tedious right now. (Enough that I noticed often enough to eventually make this ticket!)
Author
Owner

@lunny commented on GitHub (Jun 21, 2023):

Looks like now it took 619ms from the second time. The try site has a lower resource with 1GB memory. So I think this is acceptable.

@lunny commented on GitHub (Jun 21, 2023): Looks like now it took 619ms from the second time. The try site has a lower resource with 1GB memory. So I think this is acceptable.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#9720