Closed
Bug 1473310
Opened 6 years ago
Closed 2 years ago
[e10s a11y] German Wikipedia List of Tatort episodes (AKA large tables) causes slowness in e10S a11y
Categories
(Core :: Disability Access APIs, defect, P2)
Tracking
()
RESOLVED
FIXED
113 Branch
People
(Reporter: MarcoZ, Assigned: Jamie)
References
(Blocks 1 open bug, )
Details
(Keywords: perf, Whiteboard: [sci-exclude])
STR:
1. With NVDA and Firefox running, go to https://de.wikipedia.org/wiki/Liste_der_Tatort-Folgen
Result: Document takes approximately 1 minute to load. It also depends a bit on whether the mouse is positioned somewhere and can trigger a tooltip after load, which can cause the buffer to immediately be rerendered again.
This particular page seems to trigger something we're not yet optimising for in the handler cache, and it makes the page very slow to load. Moreover, if you focus one of the episode titles, a popup is showing which displays the synopsis of the episode. That is appended to the end of the document, causing massive buffer rerendering. We cannot do much about the latter, but perhaps if we can do something about the former, the latter is not so bad any more. :)
This was reported to me by a user in Austria.
Assignee | ||
Comment 1•6 years ago
|
||
For me, the max time to load is about 25 seconds:
DEBUG - virtualBuffers.VirtualBuffer._loadBuffer (09:25:17.526):
Buffer load took 22.587 sec, 136241 chars
Even if not a minute, that's still unacceptable. What's more concerning, though, is that even if my mouse is at the top of the screen, every time I alt+tab out and back in, I get massive (10+ seconds) lags. And that's true even if the tab is in the background. So there must be something being mutated in that document for things other than mouse movement.
Re the load time, my suspicion is that this has at least something to do with the massive table on that page. It has over 1000 rows and 9 columns. If each of those columns has a header (which I'm pretty sure it does), that'll be nearly 10000 objects we have to marshal, most of them objects we've already marshaled before. The only way I can think of to deal with this is to somehow cache headers the first time they are retrieved until the table is released and return duplicate headers from that cache. That's risky - we never wanted to cache beyond a single object, as cache recursion is an ugly business - but I think it's the only way.
I think we should first try with a build with row/column headers disabled to see if that really does speed things up.
Assignee: nobody → jteh
Priority: -- → P2
Assignee | ||
Comment 2•6 years ago
|
||
(In reply to James Teh [:Jamie] from comment #1)
> I think we should first try with a build with row/column headers disabled to
> see if that really does speed things up.
Marco, would you mind doing this? In accessible/win/ipc/handler/AccessibleHandler.cpp, alter the get_rowHeaderCells and get_columnHeaderCells functions so that they simply return E_NOTIMPL at the top (comment out the real code). You'll need to regsvr32 AccessibleHandler.dll as admin once built.
Flags: needinfo?(mzehe)
Reporter | ||
Comment 3•6 years ago
|
||
That brings buffer load times down to about 11 seconds.
DEBUG - virtualBuffers.VirtualBuffer._loadBuffer (10:16:01.098):
Buffer load took 11.548 sec, 137259 chars
Flags: needinfo?(mzehe)
Updated•5 years ago
|
Whiteboard: [sci-exclude]
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
See Also: → https://github.com/nvaccess/nvda/issues/9383
Assignee | ||
Comment 4•4 years ago
|
||
Another great real world page for testing, since it contains a ~10000 row table:
https://github.com/get-iplayer/get_iplayer/blob/master/get_iplayer
Assignee | ||
Comment 5•4 years ago
|
||
As well as the dependent bugs, https://github.com/nvaccess/nvda/pull/8678 significantly improves things here, as it doesn't re-render the whole document every time a pop-up appears on the page.
See Also: → https://github.com/nvaccess/nvda/pull/8678
Assignee | ||
Comment 6•4 years ago
|
||
I just submitted https://github.com/nvaccess/nvda/pull/11205 to avoid unnecessary fetches of labelledBy for every object.
See Also: → https://github.com/nvaccess/nvda/pull/11205
Updated•2 years ago
|
Severity: normal → S3
Assignee | ||
Comment 7•2 years ago
|
||
This is resolved by Cache the World, which is enabled by default in Firefox 113.
Status: NEW → RESOLVED
Closed: 2 years ago
status-firefox113:
--- → fixed
status-firefox114:
--- → fixed
status-firefox115:
--- → fixed
Resolution: --- → FIXED
Updated•2 years ago
|
Target Milestone: --- → 113 Branch
You need to log in
before you can comment on or make changes to this bug.
Description
•