Issue metadata
Sign in to add a comment
|
Performance: ChromeVox Next lags on large site |
||||||||||||||||||||||
Issue descriptionblindcooltech.com result: navigation is noticeably laggy
,
Aug 11 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6247dd22f8cc3628271a6ca5e818042c73772714 commit 6247dd22f8cc3628271a6ca5e818042c73772714 Author: dtseng <dtseng@chromium.org> Date: Thu Aug 11 20:08:12 2016 Make ChromeVox navigation 100x faster on some sites. It turns out that there is a very tangible cost to context switching into and out of V8 as was advised by others in the past. Since the major native rewrite of automation into C++, there hasn't been a good illustration of the actual perf implications until now. The issue. The current implementation of AutomationNode.children makes several calls to native to fetch child id's. On a large site, where a node has many children, this adds up quickly. Since the actual js objects are created on the initial node data event, it's not js object creation causing any perf issues. The data On a site like blindcooltech.com: there are about 4000 children of the root in the automation tree. root.children takes around 60 ms. Next/previous sibling calls to any child of root takes around 100 ms. This results in a significant lag when navigating the site and things like incremental search take about a few minutes to find a text match. Mitigation Since ChromeVox rarely needs to ask for children, we are fine with using next/previous sibling. The previous impl of sibling traversal relies upon asking for the parent's children. This cl changes it so we directly ask the native bindings for the child id at index. With this change, next/previous sibling calls take about 0 ms. BUG= 636954 Review-Url: https://codereview.chromium.org/2243463002 Cr-Commit-Position: refs/heads/master@{#411412} [modify] https://crrev.com/6247dd22f8cc3628271a6ca5e818042c73772714/chrome/renderer/resources/extensions/automation/automation_node.js
,
Aug 11 2016
,
Aug 19 2016
,
Oct 13 2016
,
Oct 31 2016
verified on 56.0.2903.0 |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by dtseng@chromium.org
, Aug 11 2016Specific numbers: var pre = new Date(); ChromeVoxState.instance.currentRange.move('node', 'forward'); new Date() - pre; on blindcooltech.com: 300 on google.com 11