Bug 155460 - Reduce generated JSON HeapSnapshot size
Summary: Reduce generated JSON HeapSnapshot size
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: All All
: P2 Normal
Assignee: Joseph Pecoraro
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-14 13:50 PDT by Joseph Pecoraro
Modified: 2016-03-14 14:50 PDT (History)
9 users (show)

See Also:


Attachments
[PATCH] Proposed Fix (21.78 KB, patch)
2016-03-14 13:56 PDT, Joseph Pecoraro
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.