Closed Bug 1552015 Opened 5 years ago Closed 5 years ago

Expensive getColumnBreakpoints shows down scrolling in large files

Categories

(DevTools :: Debugger, defect, P2)

defect

Tracking

(firefox69 fixed)

RESOLVED FIXED
Firefox 69
Tracking Status
firefox69 --- fixed

People

(Reporter: Harald, Assigned: jlast)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [debugger-mvp])

Attachments

(1 file, 1 obsolete file)

What were you doing?

  1. Open Debugger on https://discourse.mozilla.org/c/add-ons
  2. Open source https://cdn-production.discourse.mozilla-community.org/assets/_application-*.js
  3. Scroll down

What happened?

Sluggish scrolling.

What should have happened?

Smooth scrolling.

Anything else we should know?

https://perfht.ml/2JNvMyC

getColumnBreakpoints blows the frame budget with 100ms+.

Thoughts

  1. Without any breakpoints active, this shouldn't be even called
  2. If this function can't be faster, maybe it can be debounced with requestIdleCallback
getColumnBreakpoints
444/createSelectorCreator/</memoizedResultFunc<
444/defaultMemoize/<
444/createSelectorCreator/</selector<
444/defaultMemoize/<
mapStateToProps
mapToPropsProxy
handleNewState
handleSubsequentCalls
pureFinalPropsSelector
runComponentSelector
onStateChange
bound
notify
notifyNestedSubs
bound
onStateChange
bound
notify
notifyNestedSubs
bound
onStateChange
bound
dispatch
waitUntilService/</<
promiseMiddleware/</<
context/</<
thunk/</</<
bindActionCreator/<
invokeFunc
leadingEdge
debounced
it
CodeMirror</Sa/<
Blocks: dbg-perf
Priority: -- → P2
Assignee: nobody → jlaster
Status: NEW → ASSIGNED
Whiteboard: [debugger-mvp]
Pushed by jlaster@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/6b3192ef9401
improve column breakpoint rendering performance. r=davidwalsh

Backed out changeset 6b3192ef9401 (Bug 1552015) for es lint failure on visibleColumnBreakpoints.js

Push with failure: https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=linting%2Copt%2Csource-test-mozlint-eslint%2C%28es%29&fromchange=d9b95f0b3eb2e6295c297bbc3934716917088c02&tochange=162bfe0357154f3f0a178e68068371132c0071c4&selectedJob=251291007

Backout link: https://hg.mozilla.org/integration/autoland/rev/162bfe0357154f3f0a178e68068371132c0071c4

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=251291007&repo=autoland&lineNumber=290

[vcs 2019-06-12T00:57:42.880Z] 277993 files updated, 0 files merged, 0 files removed, 0 files unresolved
[vcs 2019-06-12T00:57:43.176Z] updated to 6b3192ef9401d1f04be540641aeda20e9056b9ef
[vcs 2019-06-12T00:57:43.181Z] PERFHERDER_DATA: {"framework": {"name": "vcs"}, "suites": [{"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "clone", "serverUrl": "us-west-2.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 154.96659994125366}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "update", "serverUrl": "us-west-2.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 107.52980184555054}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "overall", "serverUrl": "us-west-2.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 262.696524143219}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "overall_clone", "serverUrl": "us-west-2.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 262.696524143219}, {"extraOptions": ["m3.xlarge"], "lowerIsBetter": true, "name": "overall_clone_fullcheckout", "serverUrl": "us-west-2.hgmointernal.net", "shouldAlert": false, "subtests": [], "value": 262.696524143219}]}
[vcs 2019-06-12T00:57:43.508Z] TinderboxPrint:<a href=https://us-west-2.hgmointernal.net/integration/autoland/rev/6b3192ef9401d1f04be540641aeda20e9056b9ef title='Built from autoland revision 6b3192ef9401d1f04be540641aeda20e9056b9ef'>6b3192ef9401d1f04be540641aeda20e9056b9ef</a>
[task 2019-06-12T00:57:43.508Z] executing ['bash', '-cx', 'cd /builds/worker/checkouts/gecko/ && cp -r /build/node_modules_eslint node_modules && ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules && ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules && ./mach lint -l eslint -f treeherder --quiet -f json:/builds/worker/mozlint.json\n']
[task 2019-06-12T00:57:43.512Z] + cd /builds/worker/checkouts/gecko/
[task 2019-06-12T00:57:43.512Z] + cp -r /build/node_modules_eslint node_modules
[task 2019-06-12T00:57:45.343Z] + ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules
[task 2019-06-12T00:57:45.344Z] + ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules
[task 2019-06-12T00:57:45.345Z] + ./mach lint -l eslint -f treeherder --quiet -f json:/builds/worker/mozlint.json
[task 2019-06-12T00:57:46.312Z] New python executable in /builds/worker/checkouts/gecko/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin/python2.7
[task 2019-06-12T00:57:46.312Z] Also creating executable in /builds/worker/checkouts/gecko/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin/python
[task 2019-06-12T00:57:48.021Z] Installing setuptools, pip, wheel...done.
[task 2019-06-12T00:57:49.084Z] running build_ext
[task 2019-06-12T00:57:49.085Z] building 'psutil._psutil_linux' extension
[task 2019-06-12T00:57:49.085Z] creating build
[task 2019-06-12T00:57:49.085Z] creating build/temp.linux-x86_64-2.7
[task 2019-06-12T00:57:49.085Z] creating build/temp.linux-x86_64-2.7/psutil
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_common.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_common.o
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o
[task 2019-06-12T00:57:49.085Z] creating build/lib.linux-x86_64-2.7
[task 2019-06-12T00:57:49.085Z] creating build/lib.linux-x86_64-2.7/psutil
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/psutil/_psutil_common.o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o -o build/lib.linux-x86_64-2.7/psutil/_psutil_linux.so
[task 2019-06-12T00:57:49.085Z] building 'psutil._psutil_posix' extension
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_common.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_common.o
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=543 -DPSUTIL_LINUX=1 -I/usr/include/python2.7 -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o
[task 2019-06-12T00:57:49.085Z] x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/psutil/_psutil_common.o build/temp.linux-x86_64-2.7/psutil/_psutil_posix.o -o build/lib.linux-x86_64-2.7/psutil/_psutil_posix.so
[task 2019-06-12T00:57:49.085Z] copying build/lib.linux-x86_64-2.7/psutil/_psutil_linux.so -> psutil
[task 2019-06-12T00:57:49.085Z] copying build/lib.linux-x86_64-2.7/psutil/_psutil_posix.so -> psutil
[task 2019-06-12T00:57:49.085Z]
[task 2019-06-12T00:57:49.085Z] Error processing command. Ignoring because optional. (optional:packages.txt:comm/build/virtualenv_packages.txt)
[task 2019-06-12T01:07:50.521Z] TEST-UNEXPECTED-ERROR | /builds/worker/checkouts/gecko/devtools/client/debugger/src/selectors/visibleColumnBreakpoints.js:193:49 | Replace ???ColumnBreakpoints? with ColumnBreakpoints (prettier/prettier)
[taskcluster 2019-06-12 01:07:50.845Z] === Task Finished ===
[taskcluster 2019-06-12 01:07:51.786Z] Unsuccessful task run with exit code: 1 completed in 874.324 seconds

Flags: needinfo?(jlaster)
Pushed by jlaster@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/69d2b6708f9b
improve column breakpoint rendering performance.
Attachment #9070975 - Attachment is obsolete: true
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 69
Flags: needinfo?(jlaster)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: