Issue metadata
Sign in to add a comment
|
98.6%-99.4% regression in blink_perf.bindings at 380006:380074 |
||||||||||||||||||||
Issue descriptionSee the link to graphs below.
,
Mar 10 2016
I've kicked off a bisect to be sure, but from the revision history, the most likely candidate looks to be "Optimize new TypedArray(typedArray) constructor" given the tests which are regressing. Dan, could you take a look if the bisect confirms?
,
Mar 10 2016
=== Auto-CCing suspected CL author littledan@chromium.org === Hi littledan@chromium.org, the bisect results pointed to your CL below as possibly causing a regression. Please have a look at this info and see whether your CL be related. ===== BISECT JOB RESULTS ===== Status: completed ===== SUSPECTED CL(s) ===== Subject : Optimize new TypedArray(typedArray) constructor Author : littledan Commit description: A previous spec compliance fix for TypedArrays caused a ~4x performance regression. This patch removes the regression by calling out to a path within the runtime which implements array copying more efficiently. BUG= chromium:592007 R=adamk LOG=Y Review URL: https://codereview.chromium.org/1767893002 Cr-Commit-Position: refs/heads/master@{#34601} Commit : ab6e48de4815a03cb6523fbce209fd6fb6df9696 Date : Tue Mar 08 20:08:39 2016 ===== TESTED REVISIONS ===== Revision Mean Value Std. Dev. Num Values Good? chromium@380053 256.322828 0.74851 7 good chromium@380054 254.566266 0.541421 6 good chromium@380054,v8@3f8af30ee7254.425553 0.449755 7 good chromium@380054,v8@d61a0c5a4a254.301204 0.390692 6 good chromium@380054,v8@ab6e48de483.777629 0.083869 5 bad chromium@380055 3.786072 0.032808 5 bad chromium@380056 3.850569 0.026538 5 bad Bisect job ran on: mac_hdd_perf_bisect Bug ID: 593644 Test Command: src/tools/perf/run_benchmark -v --browser=release --output-format=chartjson --also-run-disabled-tests blink_perf.bindings Test Metric: typed-array-construct-from-array/typed-array-construct-from-array Relative Change: 98.50% Score: 99.9 Buildbot stdio: http://build.chromium.org/p/tryserver.chromium.perf/builders/mac_hdd_perf_bisect/builds/446 Job details: https://chromeperf.appspot.com/buildbucket_job_status/9018584969158054480 | O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq | X | for more information addressing perf regression bugs. For feedback, | / \ | file a bug with label Cr-Tests-AutoBisect. Thank you!
,
Mar 10 2016
This patch removed an invalid optimization: If an Array is passed as input to the TypedArray constructor, then we can't just treat it as an arraylike, because the ArrayIterator may have been monkey-patched, and we are required to run that code. Is this benchmark important? If so, I can put back the invalid optimization for now until we figure out how to make a valid version (e.g., by checking to see if ArrayIterator has ever been messed with).
,
Mar 10 2016
Haven't looked at the git log yet, but it appears this was again a microbenchmark from an optimization on the blink side. Given that this CL would be expected to regress such a microbenchmark, this seems fine for now. You might want to follow up with kbr@ separately to see if he has some intuitions about what uses of TypedArrays must remain fast.
,
Mar 10 2016
Adding krb@ and benchmark owners bashi@ and yukishiino@ in case they have context on how much we care about this microbenchmark (please see above).
,
Mar 10 2016
,
Mar 10 2016
The performance of typed arrays' constructors is critically important for real-world applications like Google Maps. We shouldn't allow huge regressions in this area. If the microbenchmarks are measuring something bogus then let's improve them.
,
Mar 10 2016
kbr@, do you know which TypedArray constructors are of critical importance for performance for Google Maps? The previous optimization was incorrect per spec, but we could reintroduce it if necessary. The correct optimization will be a lot of work, and likely couldn't be done for a quarter or two.
,
Mar 10 2016
I'll ask the Maps team to comment here, but find it hard to believe that it would be that much work to make typed arrays' constructors correct in the face of monkey-patching (if that is what the issue is). Given that nobody noticed this incorrect behavior until recently, it seems to me that the expedient thing to do would be to revert your original patch until the correct code is developed.
,
Mar 10 2016
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/5f5c48da64ba6ac91f73b812ff41a36285d629e3 commit 5f5c48da64ba6ac91f73b812ff41a36285d629e3 Author: littledan <littledan@chromium.org> Date: Thu Mar 10 23:25:17 2016 Revert removal of TypedArray constructor optimization When the TypedArray iterator constructor code path was added, a technically incorrect optimization was added which uses the arraylike code path on array arguments, even though the %ArrayIterator% could have been monkey-patched to give different behavior. A previous patch removed this optimization, and this patch restores it due to the huge performance regression that resulted. The optimization was previously removed in https://codereview.chromium.org/1767893002 BUG= chromium:593644 R=adamk LOG=Y Review URL: https://codereview.chromium.org/1779373002 Cr-Commit-Position: refs/heads/master@{#34697} [modify] https://crrev.com/5f5c48da64ba6ac91f73b812ff41a36285d629e3/src/js/typedarray.js
,
Mar 17 2016
This has recovered. |
|||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||
Comment 1 by rmcilroy@chromium.org
, Mar 10 2016