Closed Bug 1348837 Opened 7 years ago Closed 1 year ago

Poor d3.js perf vs. Chrome on Multi-Foci Force Layout demo due to display list building and layer geometry change calculations

Categories

(Core :: SVG, defect, P3)

defect

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: jfager, Unassigned)

References

(Depends on 1 open bug)

Details

(Keywords: perf)

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:53.0) Gecko/20100101 Firefox/53.0
Build ID: 20170316212821

Steps to reproduce:

Open https://bl.ocks.org/mbostock/1021953 in FF and in Chrome.

Versions:
FF: 53.0b4 (64-bit)
Chrome: 57.0.2987.110 (64-bit)

My environment: 
OSX 10.11.6 (15G1217)
MacBook Pro (Retina, 15-inch, Late 2013)
2.3GHz Intel Core i7
16GB 1600 MHz DDR3
Intel Iris Pro 1536 MB


Actual results:

Initial performance appears fine but FF consumes ~2x CPU and slows to a grind much sooner than Chrome does. 


Expected results:

FF shouldn't use more processor than Chrome and should retain performance parity over a long period.
Component: Untriaged → SVG
Keywords: perf
Product: Firefox → Core
Version: 53 Branch → Trunk
Jonathan, do you have time to profile this?  If not, please let me know and I can do it.
Flags: needinfo?(jwatt)
I left the testcase to run for a few minutes until it started to jank, then profiled for about 10 seconds:

  https://perfht.ml/2nKtpiK

So roughly:

  35%  SVGGeometryFrame::PaintSVG (DrawTargetTiled::Stroke/Fill)
  31%  nsSVGOuterSVGFrame::BuildDisplayList (_moz_pixman_region32_union_rect)
  14%  nsRefreshDriver::RunFrameRequestCallbacks (JS code)
   9%  FrameLayerBuilder::ComputeGeometryChangeForItem (_moz_pixmanregion32_init_rects)

So unfortunately we're being bitten by bug 869505 again, which has no simple fix. It's good to have another bug on record reinforcing that it's an important issue though.
Status: UNCONFIRMED → NEW
Depends on: 869505
Ever confirmed: true
Flags: needinfo?(jwatt)
Summary: Poor d3.js perf compared to Chrome on Multi-Foci Force Layout demo → Poor d3.js perf vs. Chrome on Multi-Foci Force Layout demo due to display list building and layer geometry change calculations
Why does running for a bit cause the jank?  Does the testcase keep adding more elements or something?
That's exactly what it does. It keeps adding "balls" to three piles of colored balls. There don't have to be all that many before we start to peg the CPU though.
Priority: -- → P3
Severity: normal → S3

I don't see much difference between Chrome and Firefox anymore on an M1 mac. Original URL is down, you can test here: https://blocks.roadtolarissa.com/mbostock/1021953

Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.