New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 593644 link

Starred by 0 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Mar 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug-Regression



Sign in to add a comment

98.6%-99.4% regression in blink_perf.bindings at 380006:380074

Project Member Reported by rmcilroy@chromium.org, Mar 10 2016

Issue description

See the link to graphs below.
 
Cc: littledan@chromium.org
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?
Project Member

Comment 3 by 42576172...@developer.gserviceaccount.com, Mar 10 2016

Owner: littledan@chromium.org

=== 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!
Cc: adamk@chromium.org
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).

Comment 5 by adamk@chromium.org, 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.
Cc: k...@chromium.org yukishiino@chromium.org bashi@chromium.org
Adding krb@ and benchmark owners bashi@ and yukishiino@ in case they have context on how much we care about this microbenchmark (please see above).

Comment 7 by k...@chromium.org, Mar 10 2016

Cc: -k...@chromium.org kbr@chromium.org

Comment 8 by kbr@chromium.org, 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.

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.

Comment 10 by kbr@chromium.org, 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.

Project Member

Comment 11 by bugdroid1@chromium.org, 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

Status: Fixed (was: Assigned)
This has recovered.

Sign in to add a comment