Bug 155460

Summary: Reduce generated JSON HeapSnapshot size
Product: WebKit Reporter: Joseph Pecoraro <joepeck>
Component: JavaScriptCoreAssignee: Joseph Pecoraro <joepeck>
Status: RESOLVED FIXED    
Severity: Normal CC: bburg, commit-queue, ggaren, joepeck, keith_miller, mark.lam, msaboff, saam, timothy
Priority: P2    
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Attachments:
Description Flags
[PATCH] Proposed Fix none

Description Joseph Pecoraro 2016-03-14 13:50:40 PDT
* SUMMARY
Reduce generated JSON HeapSnapshot size.

Do some extra processing while generating the HeapSnapshot JSON to reduce size. I saw a 10% JSON size reduction on large pages (31.4 MB -> 28.0 MB).

This:
  - removes duplicated edges
  - sorts edges in a reliable order
  - remove edge name duplication
  - avoid multiple cell->identifier lookups by replacing JSCell* with identifiers in Edge structs
  - clears data as early as possible to reduce backend memory footprint during JSON building
Comment 1 Joseph Pecoraro 2016-03-14 13:56:50 PDT
Created attachment 274022 [details]
[PATCH] Proposed Fix
Comment 2 Geoffrey Garen 2016-03-14 14:00:37 PDT
Comment on attachment 274022 [details]
[PATCH] Proposed Fix

Do we have a benchmark that shows the reduction here?
Comment 3 Joseph Pecoraro 2016-03-14 14:36:43 PDT
(In reply to comment #2)
> Comment on attachment 274022 [details]
> [PATCH] Proposed Fix
> 
> Do we have a benchmark that shows the reduction here?

No, I just logged the JSON snapshot string for some very large web pages (I mostly focused on iCloud.com).

I could add a JavaScriptCore/tests/heapProfiler test that creates a lot of objects and measures the generateHeapSnapshot() string length. I shied away from this because it would need to be fuzzy as JavaScriptCore changes. Is there a better way to test this?
Comment 4 WebKit Commit Bot 2016-03-14 14:50:07 PDT
Comment on attachment 274022 [details]
[PATCH] Proposed Fix

Clearing flags on attachment: 274022

Committed r198159: <http://trac.webkit.org/changeset/198159>
Comment 5 WebKit Commit Bot 2016-03-14 14:50:09 PDT
All reviewed patches have been landed.  Closing bug.