vilterp / HeapSnapshotParser.jl

parse heap snapshots in the Chrome/V8 JSON format
1 stars 1 forks source link

faster parse_snapshot #10

Open IanButterworth opened 1 year ago

IanButterworth commented 1 year ago

Fixes #9 (or helps it quite a bit)

This is on a machine with 16 cores, so an extreme example.

PR

julia> using Profile

julia> @time fp = Profile.take_heap_snapshot()
  3.220156 seconds (38 allocations: 3.188 KiB, 55.80% gc time)
"/home/ian/Documents/GitHub/julia/1808736_1665024562528373.heapsnapshot"

julia> using HeapSnapshotParser

julia> @time HeapSnapshotParser.parse_snapshot(fp);
  4.064810 seconds (120.69 M allocations: 2.970 GiB, 33.66% gc time, 41.68% compilation time)

julia> @time HeapSnapshotParser.parse_snapshot(fp);
  3.861502 seconds (120.45 M allocations: 2.955 GiB, 37.69% gc time)

master

julia> @time HeapSnapshotParser.parse_snapshot(open("/home/ian/Documents/GitHub/julia/1808736_1665024562528373.heapsnapshot"));
 13.215142 seconds (120.02 M allocations: 4.981 GiB, 17.67% gc time, 1.12% compilation time)

julia> @time HeapSnapshotParser.parse_snapshot(open("/home/ian/Documents/GitHub/julia/1808736_1665024562528373.heapsnapshot"));
 12.059683 seconds (119.94 M allocations: 5.350 GiB, 13.30% gc time)