NAME

sizeme_store.pl - process and store the raw data stream from Devel::SizeMe

SYNOPSIS

sizeme_store.pl [--text] [--dot=sizeme.dot] [--db=sizeme.db]

Typically used with Devel::SizeMe via the SIZEME env var:

export SIZEME='|./sizeme_store.pl --text'
export SIZEME='|./sizeme_store.pl --dot=sizeme.dot'
export SIZEME='|./sizeme_store.pl --db=sizeme.db'

DESCRIPTION

Reads the raw memory data from Devel::SizeMe and processes the tree via a stack, propagating data such as totals, up the tree nodes as the data streams through. Output completed nodes in the request formats.

The --text output is similar to the textual representation output by the module when the SIZEME env var is set to an empty string.

The --dot output is suitable for feeding to Graphviz. (On OSX the Graphviz application will be started automatically.)

The --db output is a SQLite database. The db schema is very subject to change. This output is destined to be the primary one. The other output types will probably become separate programs that read the db.

TODO

Current implementation is all very alpha and rather hackish.

Refactor to separate the core code into a module.

Move the output formats into separate modules, which should probably read from the db so the db becomes the canonical source of data.

Import constants from XS.

SV(PVAV) fill=1/1 [#1 @0] : +64 sv =64 : +16 av_max =80 : AVelem-> [#2 @1] : : SV(RV) [#3 @2] : : : +24 sv =104 : : : RV-> [#4 @3] : : : : SV(PVAV) fill=-1/-1 [#5 @4] : : : : : +64 sv =168 : AVelem-> [#6 @1] : : SV(IV) [#7 @2] : : : +24 sv =192 192 at -e line 1.