HaskellWiki

Haskell | Wiki community | Recent changes
Random page | Special pages

 

Not logged in
Log in | Help

Yhc/Heap profiling

< Yhc

Lag, drag, void, use

nhc98 had two pass compilation for this, lets try and do better :)

Assuming you have the lower level operations to detect when a node is collected, when it is used and when it is created:

node' = {node, time CreationTime, time FirstUse, time LastUse}

when a node' is created, it gets its creation time.

when a node' is used first, its FirstUse time gets set

when a note' is used ever, every single time, its gets its LastUse set.

When a node' is collected, its stats can be calculated: lag = firstuse-creation drag = now-lastuse void = if null creationtime then now-creation else 0 use = lastuse-firstuse

I guess the user will want to know which type of nodes, created by which function, are in any state at any discrete time point. This can be done with a set of accumulators, so effectively the graph is built in memory, then when a node' is collected it can be added to this list.

int graph[code][time]; where code is a list of all possible (function,type of node) pairs, and time is a list of discrete time steps.

This will require one pass running, does it miss anything? It doesn't say who holds onto the node, but it does the rest?

Retrieved from "http://haskell.org/haskellwiki/Yhc/Heap_profiling"

This page has been accessed 2,736 times. This page was last modified 22:26, 20 February 2006. Recent content is available under a simple permissive license.