{"id":95,"date":"2008-03-31T06:24:39","date_gmt":"2008-03-31T11:24:39","guid":{"rendered":"http:\/\/www.visophyte.org\/blog\/2008\/03\/31\/mozilla-javascript-dtrace-probes-visichron-style\/"},"modified":"2009-04-01T08:30:52","modified_gmt":"2009-04-01T13:30:52","slug":"mozilla-javascript-dtrace-probes-visichron-style","status":"publish","type":"post","link":"https:\/\/www.visophyte.org\/blog\/2008\/03\/31\/mozilla-javascript-dtrace-probes-visichron-style\/","title":{"rendered":"Mozilla JavaScript DTrace Probes, visichron style"},"content":{"rendered":"<p>\u00a0<img decoding=\"async\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2008\/03\/dtrace-calendar-ipsep-snippet.png\" alt=\"dtrace javascript snippet\" \/><\/p>\n<p>This visualization is the result of an adapted visichron.py script (from my chronicle-recorder &#8216;chroniquery&#8217; bindings) run against the output of a custom DTrace script (using the Mozilla JS providers) on OS X.\u00a0 It&#8217;s a proof-of-possibility rather than anything immediately useful.<\/p>\n<p>The differences from the last visichron post (using chronicle-recorder as a back-end) are:<\/p>\n<ul>\n<li>Node hues are distinct based on the file the javascript was executed from.\u00a0 (Saturation still varies with amount of time spent in the function.)<\/li>\n<li>Graph layout is done using graphviz&#8217;s neato&#8217;s &#8220;ipsep&#8221; (experimental) mode.\u00a0 This works fantastically well at reducing\/eliminating overlap.\u00a0 Having said that, a hierarchical layout may make more sense.<\/li>\n<li>Ring colors are based on call depth (so redundantly encoded with the ring radius) rather than any knowledge about the control-flow.\u00a0 Full control-flow information is not readily available and would be extremely expensive, but we could provide at least some degree of approximation using the calls made by the function as indicators.\u00a0 Of course, the ring visualization at this point and for this purpose is probably better represented as non-nested (side-by-side rings of different radii; not containing each other) faux-continuous ring slices with transparency varying by amount of time spent in the function at that call-depth.\u00a0 This would simplify the object model, allowing for non-insane use of the SVG backend and interactivity enhancements.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2008\/03\/dtrace-calendar-ipsep-honking-big-indexed.png\" title=\"scaled indexed\"><img decoding=\"async\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2008\/03\/dtrace-calendar-ipsep-honking-big-scaled-indexed.png\" alt=\"scaled indexed\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 This visualization is the result of an adapted visichron.py script (from my chronicle-recorder &#8216;chroniquery&#8217; bindings) run against the output of a custom DTrace script (using the Mozilla JS providers) on OS X.\u00a0 It&#8217;s a proof-of-possibility rather than anything immediately &hellip; <a href=\"https:\/\/www.visophyte.org\/blog\/2008\/03\/31\/mozilla-javascript-dtrace-probes-visichron-style\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[3,8,4],"tags":[48,49,33,39],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-mozilla","category-program-execution","category-visualizing","tag-dtrace","tag-lightning","tag-visichron","tag-visophyte"],"_links":{"self":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":1,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":259,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/95\/revisions\/259"}],"wp:attachment":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}