Add flags arg to sv_size:
flag to use link label as sv label
Move addr out of attr.
Add db transform to hide RV's (though check for addrs pointing to it first)
Split db into separate node and link tables
Sort out naming:
id vs name vs label
descriptive: Foo::, {keystr}, [42], *GLOB, etc (longer)
pass-thru enogh info to perform 'decoration' on output
Better handling of pads
especially padtmp
eg add scope, or ideally line range when emiting pad names
Perhaps add general flags UV attr that contains flags appropriate to the node (eg SV or pad)
Review general SV and attribute handling
Emit more raw info
Add global attributes, especially perl version
PL_strtab sizing
See hek_size()
Long unique keys show up as bloat in PL_strtab even though they've been seen before PL_strtab is sized?
make && SIZEME_HIDE=7 SIZEME='|bin/sizeme_store.pl --db sizeme.db --gexf sizeme.gexf' perl -Mblib -MDevel::SizeMe=:all -e '$k="k" x 10_000; push @a, { $k.scalar(@a) => 1 } while @a<1_000; perl_size()'
Fix spelling of leafs!
*** Random TODOs:
Integrate changes back into Devel::Size so we can share a common core.
Restructure:
Devel::SizeMe::Core - loads XS and sets options
Devel::SizeMe - loads Devel::SizeMe::Core
-d:SizeMe=opts?
Devel::SizeMe::Stream - parse raw stream
Devel::SizeMe::Store - db write
Devel::SizeMe::Data - db read / orlite?
Devel::SizeMe::Graph - data reading/processing for sizeme_graph
sizeme_store - script wrapper for Devel::SizeMe::Store
sizeme_graph - Mojolicious app wrapper using Devel::SizeMe::Graph
Move Devel::SizeMe::Graph and co out to separate distro.
Link and item names should match perlguts/perlapi names.
Tests!
hv placeholders
[ 1 => [] ]
$x=[]; push @$x, $x; total_size($x); # loop
Reduce data volume to optimize usage and visualizations
ideally as an optional post-processing on the db tables
drop SV(RV) detail?
for cases where there's only a single ref to the SV(RV)
prune
bottom up delete nodes below a certain size, add size to parent
only if the parent is the only node refering to it
Docs
note TARG effect on total_size([[]]) not counting the inner ref due to refcnt
note issues around sizing of hash keys (re shared string table)
note won't recurse into a struct that holds a ref to itself, by default
Random References:
Graph file formats:
dot (graphviz)
graphml
net (Pajek)
vna (netdraw)
Suitable: gexf, gml, graphml (also gdf)
Useful techniques:
Hypergraph - hides distant detail
Network Visualization tools:
Import: dot, gml, gdf, graphml, net, vna, tlp
Export: dl, gdf, gexf, gml, graphml, net, vna
Opt-click-drag on mac trackpad to alter 3d view
Import: gml, xgmml, sbml, biopax, psi-mi, sif, nnf
Export: xgmml, psi-mi, sif, nnf
Java app. Import: dot
Java Applet.
JS. Designed for rendering massive graphs. Immature.
Import: dot, gml, gexf, net, tlp
Export: gml, tlp
Graphviz - sfdp