|
<?xml version="1.0" standalone="no"?> |
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> |
|
<svg version="1.1" width="1200" height="470" onload="init(evt)" viewBox="0 0 1200 470" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> |
|
<!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. --> |
|
<!-- NOTES: --> |
|
<defs > |
|
<linearGradient id="background" y1="0" y2="1" x1="0" x2="0" > |
|
<stop stop-color="#eeeeee" offset="5%" /> |
|
<stop stop-color="#eeeeb0" offset="95%" /> |
|
</linearGradient> |
|
</defs> |
|
<style type="text/css"> |
|
.func_g:hover { stroke:black; stroke-width:0.5; cursor:pointer; } |
|
</style> |
|
<script type="text/ecmascript"> |
|
<![CDATA[ |
|
var details, searchbtn, matchedtxt, svg; |
|
function init(evt) { |
|
details = document.getElementById("details").firstChild; |
|
searchbtn = document.getElementById("search"); |
|
matchedtxt = document.getElementById("matched"); |
|
svg = document.getElementsByTagName("svg")[0]; |
|
searching = 0; |
|
} |
|
|
|
// mouse-over for info |
|
function s(node) { // show |
|
info = g_to_text(node); |
|
details.nodeValue = "Function: " + info; |
|
} |
|
function c() { // clear |
|
details.nodeValue = ' '; |
|
} |
|
|
|
// ctrl-F for search |
|
window.addEventListener("keydown",function (e) { |
|
if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { |
|
e.preventDefault(); |
|
search_prompt(); |
|
} |
|
}) |
|
|
|
// functions |
|
function find_child(parent, name, attr) { |
|
var children = parent.childNodes; |
|
for (var i=0; i<children.length;i++) { |
|
if (children[i].tagName == name) |
|
return (attr != undefined) ? children[i].attributes[attr].value : children[i]; |
|
} |
|
return; |
|
} |
|
function orig_save(e, attr, val) { |
|
if (e.attributes["_orig_"+attr] != undefined) return; |
|
if (e.attributes[attr] == undefined) return; |
|
if (val == undefined) val = e.attributes[attr].value; |
|
e.setAttribute("_orig_"+attr, val); |
|
} |
|
function orig_load(e, attr) { |
|
if (e.attributes["_orig_"+attr] == undefined) return; |
|
e.attributes[attr].value = e.attributes["_orig_"+attr].value; |
|
e.removeAttribute("_orig_"+attr); |
|
} |
|
function g_to_text(e) { |
|
var text = find_child(e, "title").firstChild.nodeValue; |
|
return (text) |
|
} |
|
function g_to_func(e) { |
|
var func = g_to_text(e); |
|
// if there's any manipulation we want to do to the function |
|
// name before it's searched, do it here before returning. |
|
return (func); |
|
} |
|
function update_text(e) { |
|
var r = find_child(e, "rect"); |
|
var t = find_child(e, "text"); |
|
var w = parseFloat(r.attributes["width"].value) -3; |
|
var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); |
|
t.attributes["x"].value = parseFloat(r.attributes["x"].value) +3; |
|
|
|
// Smaller than this size won't fit anything |
|
if (w < 2*12*0.59) { |
|
t.textContent = ""; |
|
return; |
|
} |
|
|
|
t.textContent = txt; |
|
// Fit in full text width |
|
if (/^ *$/.test(txt) || t.getSubStringLength(0, txt.length) < w) |
|
return; |
|
|
|
for (var x=txt.length-2; x>0; x--) { |
|
if (t.getSubStringLength(0, x+2) <= w) { |
|
t.textContent = txt.substring(0,x) + ".."; |
|
return; |
|
} |
|
} |
|
t.textContent = ""; |
|
} |
|
|
|
// zoom |
|
function zoom_reset(e) { |
|
if (e.attributes != undefined) { |
|
orig_load(e, "x"); |
|
orig_load(e, "width"); |
|
} |
|
if (e.childNodes == undefined) return; |
|
for(var i=0, c=e.childNodes; i<c.length; i++) { |
|
zoom_reset(c[i]); |
|
} |
|
} |
|
function zoom_child(e, x, ratio) { |
|
if (e.attributes != undefined) { |
|
if (e.attributes["x"] != undefined) { |
|
orig_save(e, "x"); |
|
e.attributes["x"].value = (parseFloat(e.attributes["x"].value) - x - 10) * ratio + 10; |
|
if(e.tagName == "text") e.attributes["x"].value = find_child(e.parentNode, "rect", "x") + 3; |
|
} |
|
if (e.attributes["width"] != undefined) { |
|
orig_save(e, "width"); |
|
e.attributes["width"].value = parseFloat(e.attributes["width"].value) * ratio; |
|
} |
|
} |
|
|
|
if (e.childNodes == undefined) return; |
|
for(var i=0, c=e.childNodes; i<c.length; i++) { |
|
zoom_child(c[i], x-10, ratio); |
|
} |
|
} |
|
function zoom_parent(e) { |
|
if (e.attributes) { |
|
if (e.attributes["x"] != undefined) { |
|
orig_save(e, "x"); |
|
e.attributes["x"].value = 10; |
|
} |
|
if (e.attributes["width"] != undefined) { |
|
orig_save(e, "width"); |
|
e.attributes["width"].value = parseInt(svg.width.baseVal.value) - (10*2); |
|
} |
|
} |
|
if (e.childNodes == undefined) return; |
|
for(var i=0, c=e.childNodes; i<c.length; i++) { |
|
zoom_parent(c[i]); |
|
} |
|
} |
|
function zoom(node) { |
|
var attr = find_child(node, "rect").attributes; |
|
var width = parseFloat(attr["width"].value); |
|
var xmin = parseFloat(attr["x"].value); |
|
var xmax = parseFloat(xmin + width); |
|
var ymin = parseFloat(attr["y"].value); |
|
var ratio = (svg.width.baseVal.value - 2*10) / width; |
|
|
|
// XXX: Workaround for JavaScript float issues (fix me) |
|
var fudge = 0.0001; |
|
|
|
var unzoombtn = document.getElementById("unzoom"); |
|
unzoombtn.style["opacity"] = "1.0"; |
|
|
|
var el = document.getElementsByTagName("g"); |
|
for(var i=0;i<el.length;i++){ |
|
var e = el[i]; |
|
var a = find_child(e, "rect").attributes; |
|
var ex = parseFloat(a["x"].value); |
|
var ew = parseFloat(a["width"].value); |
|
// Is it an ancestor |
|
if (0 == 0) { |
|
var upstack = parseFloat(a["y"].value) > ymin; |
|
} else { |
|
var upstack = parseFloat(a["y"].value) < ymin; |
|
} |
|
if (upstack) { |
|
// Direct ancestor |
|
if (ex <= xmin && (ex+ew+fudge) >= xmax) { |
|
e.style["opacity"] = "0.5"; |
|
zoom_parent(e); |
|
e.onclick = function(e){unzoom(); zoom(this);}; |
|
update_text(e); |
|
} |
|
// not in current path |
|
else |
|
e.style["display"] = "none"; |
|
} |
|
// Children maybe |
|
else { |
|
// no common path |
|
if (ex < xmin || ex + fudge >= xmax) { |
|
e.style["display"] = "none"; |
|
} |
|
else { |
|
zoom_child(e, xmin, ratio); |
|
e.onclick = function(e){zoom(this);}; |
|
update_text(e); |
|
} |
|
} |
|
} |
|
} |
|
function unzoom() { |
|
var unzoombtn = document.getElementById("unzoom"); |
|
unzoombtn.style["opacity"] = "0.0"; |
|
|
|
var el = document.getElementsByTagName("g"); |
|
for(i=0;i<el.length;i++) { |
|
el[i].style["display"] = "block"; |
|
el[i].style["opacity"] = "1"; |
|
zoom_reset(el[i]); |
|
update_text(el[i]); |
|
} |
|
} |
|
|
|
// search |
|
function reset_search() { |
|
var el = document.getElementsByTagName("rect"); |
|
for (var i=0; i < el.length; i++) { |
|
orig_load(el[i], "fill") |
|
} |
|
} |
|
function search_prompt() { |
|
if (!searching) { |
|
var term = prompt("Enter a search term (regexp " + |
|
"allowed, eg: ^ext4_)", ""); |
|
if (term != null) { |
|
search(term) |
|
} |
|
} else { |
|
reset_search(); |
|
searching = 0; |
|
searchbtn.style["opacity"] = "0.1"; |
|
searchbtn.firstChild.nodeValue = "Search" |
|
matchedtxt.style["opacity"] = "0.0"; |
|
matchedtxt.firstChild.nodeValue = "" |
|
} |
|
} |
|
function search(term) { |
|
var re = new RegExp(term); |
|
var el = document.getElementsByTagName("g"); |
|
var matches = new Object(); |
|
var maxwidth = 0; |
|
for (var i = 0; i < el.length; i++) { |
|
var e = el[i]; |
|
if (e.attributes["class"].value != "func_g") |
|
continue; |
|
var func = g_to_func(e); |
|
var rect = find_child(e, "rect"); |
|
if (rect == null) { |
|
// the rect might be wrapped in an anchor |
|
// if nameattr href is being used |
|
if (rect = find_child(e, "a")) { |
|
rect = find_child(r, "rect"); |
|
} |
|
} |
|
if (func == null || rect == null) |
|
continue; |
|
|
|
// Save max width. Only works as we have a root frame |
|
var w = parseFloat(rect.attributes["width"].value); |
|
if (w > maxwidth) |
|
maxwidth = w; |
|
|
|
if (func.match(re)) { |
|
// highlight |
|
var x = parseFloat(rect.attributes["x"].value); |
|
orig_save(rect, "fill"); |
|
rect.attributes["fill"].value = |
|
"rgb(230,0,230)"; |
|
|
|
// remember matches |
|
if (matches[x] == undefined) { |
|
matches[x] = w; |
|
} else { |
|
if (w > matches[x]) { |
|
// overwrite with parent |
|
matches[x] = w; |
|
} |
|
} |
|
searching = 1; |
|
} |
|
} |
|
if (!searching) |
|
return; |
|
|
|
searchbtn.style["opacity"] = "1.0"; |
|
searchbtn.firstChild.nodeValue = "Reset Search" |
|
|
|
// calculate percent matched, excluding vertical overlap |
|
var count = 0; |
|
var lastx = -1; |
|
var lastw = 0; |
|
var keys = Array(); |
|
for (k in matches) { |
|
if (matches.hasOwnProperty(k)) |
|
keys.push(k); |
|
} |
|
// sort the matched frames by their x location |
|
// ascending, then width descending |
|
keys.sort(function(a, b){ |
|
return a - b; |
|
}); |
|
// Step through frames saving only the biggest bottom-up frames |
|
// thanks to the sort order. This relies on the tree property |
|
// where children are always smaller than their parents. |
|
var fudge = 0.0001; // JavaScript floating point |
|
for (var k in keys) { |
|
var x = parseFloat(keys[k]); |
|
var w = matches[keys[k]]; |
|
if (x >= lastx + lastw - fudge) { |
|
count += w; |
|
lastx = x; |
|
lastw = w; |
|
} |
|
} |
|
// display matched percent |
|
matchedtxt.style["opacity"] = "1.0"; |
|
pct = 100 * count / maxwidth; |
|
if (pct == 100) |
|
pct = "100" |
|
else |
|
pct = pct.toFixed(1) |
|
matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%"; |
|
} |
|
function searchover(e) { |
|
searchbtn.style["opacity"] = "1.0"; |
|
} |
|
function searchout(e) { |
|
if (searching) { |
|
searchbtn.style["opacity"] = "1.0"; |
|
} else { |
|
searchbtn.style["opacity"] = "0.1"; |
|
} |
|
} |
|
]]> |
|
</script> |
|
<rect x="0.0" y="0" width="1200.0" height="470.0" fill="url(#background)" /> |
|
<text text-anchor="middle" x="600.00" y="24" font-size="17" font-family="Verdana" fill="rgb(0,0,0)" >Flame Graph</text> |
|
<text text-anchor="" x="10.00" y="453" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="details" > </text> |
|
<text text-anchor="" x="10.00" y="24" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="unzoom" onclick="unzoom()" style="opacity:0.0;cursor:pointer" >Reset Zoom</text> |
|
<text text-anchor="" x="1090.00" y="24" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="search" onmouseover="searchover()" onmouseout="searchout()" onclick="search_prompt()" style="opacity:0.1;cursor:pointer" >Search</text> |
|
<text text-anchor="" x="1090.00" y="453" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="matched" > </text> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::__detail::__to_chars_10<unsigned int> (17 samples, 8.76%)</title><rect x="253.3" y="165" width="103.4" height="15.0" fill="rgb(224,211,17)" rx="2" ry="2" /> |
|
<text text-anchor="" x="256.30" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::__detai..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI__dl_catch_exception (1 samples, 0.52%)</title><rect x="368.9" y="149" width="6.0" height="15.0" fill="rgb(243,71,29)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>benchmark::main (166 samples, 85.57%)</title><rect x="168.1" y="229" width="1009.7" height="15.0" fill="rgb(226,105,1)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >benchmark::main</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>get_bulk (29 samples, 14.95%)</title><rect x="180.3" y="213" width="176.4" height="15.0" fill="rgb(221,111,38)" rx="2" ry="2" /> |
|
<text text-anchor="" x="183.31" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >get_bulk</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>do_lookup_x (1 samples, 0.52%)</title><rect x="89.1" y="373" width="6.1" height="15.0" fill="rgb(214,123,15)" rx="2" ry="2" /> |
|
<text text-anchor="" x="92.07" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__libc_start_main (6 samples, 3.09%)</title><rect x="101.2" y="373" width="36.5" height="15.0" fill="rgb(224,146,41)" rx="2" ry="2" /> |
|
<text text-anchor="" x="104.24" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__l..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI__dl_catch_error (1 samples, 0.52%)</title><rect x="368.9" y="165" width="6.0" height="15.0" fill="rgb(205,45,7)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::__detail::__to_chars_len<unsigned int> (6 samples, 3.09%)</title><rect x="320.2" y="149" width="36.5" height="15.0" fill="rgb(239,90,14)" rx="2" ry="2" /> |
|
<text text-anchor="" x="323.21" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::from_ptr (21 samples, 10.82%)</title><rect x="374.9" y="213" width="127.8" height="15.0" fill="rgb(213,5,50)" rx="2" ry="2" /> |
|
<text text-anchor="" x="377.95" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::ffi::c_str:..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_dl_lookup_symbol_x (1 samples, 0.52%)</title><rect x="368.9" y="53" width="6.0" height="15.0" fill="rgb(212,218,38)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="63.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[[stack]] (6 samples, 3.09%)</title><rect x="64.7" y="389" width="36.5" height="15.0" fill="rgb(240,193,5)" rx="2" ry="2" /> |
|
<text text-anchor="" x="67.74" y="399.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >[[s..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::rt::lang_start_internal (166 samples, 85.57%)</title><rect x="168.1" y="341" width="1009.7" height="15.0" fill="rgb(239,40,50)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::rt::lang_start_internal</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>dl_main (1 samples, 0.52%)</title><rect x="1183.9" y="341" width="6.1" height="15.0" fill="rgb(225,74,44)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1186.92" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_start (173 samples, 89.18%)</title><rect x="137.7" y="389" width="1052.3" height="15.0" fill="rgb(212,162,7)" rx="2" ry="2" /> |
|
<text text-anchor="" x="140.73" y="399.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_start</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once (166 samples, 85.57%)</title><rect x="168.1" y="277" width="1009.7" height="15.0" fill="rgb(245,101,46)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_dl_relocate_object (1 samples, 0.52%)</title><rect x="368.9" y="69" width="6.0" height="15.0" fill="rgb(215,154,15)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="79.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::validations::run_utf8_validation (77 samples, 39.69%)</title><rect x="660.8" y="181" width="468.4" height="15.0" fill="rgb(247,186,21)" rx="2" ry="2" /> |
|
<text text-anchor="" x="663.82" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >core::str::validations::run_utf8_validation</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[unknown] (6 samples, 3.09%)</title><rect x="101.2" y="389" width="36.5" height="15.0" fill="rgb(242,144,28)" rx="2" ry="2" /> |
|
<text text-anchor="" x="104.24" y="399.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >[un..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__strlen_avx2 (19 samples, 9.79%)</title><rect x="387.1" y="197" width="115.6" height="15.0" fill="rgb(220,49,44)" rx="2" ry="2" /> |
|
<text text-anchor="" x="390.11" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__strlen_avx2</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::to_bytes (8 samples, 4.12%)</title><rect x="1129.2" y="197" width="48.6" height="15.0" fill="rgb(214,212,11)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1132.18" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std:..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>main (166 samples, 85.57%)</title><rect x="168.1" y="357" width="1009.7" height="15.0" fill="rgb(240,199,51)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >main</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::from_ptr (1 samples, 0.52%)</title><rect x="40.4" y="373" width="6.1" height="15.0" fill="rgb(239,150,9)" rx="2" ry="2" /> |
|
<text text-anchor="" x="43.41" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_int_malloc (1 samples, 0.52%)</title><rect x="247.2" y="181" width="6.1" height="15.0" fill="rgb(242,97,38)" rx="2" ry="2" /> |
|
<text text-anchor="" x="250.22" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::from_ptr (1 samples, 0.52%)</title><rect x="95.2" y="373" width="6.0" height="15.0" fill="rgb(252,142,2)" rx="2" ry="2" /> |
|
<text text-anchor="" x="98.15" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>benchmark (194 samples, 100.00%)</title><rect x="10.0" y="405" width="1180.0" height="15.0" fill="rgb(235,159,39)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="415.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >benchmark</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[libpthread-2.33.so] (6 samples, 3.09%)</title><rect x="101.2" y="357" width="36.5" height="15.0" fill="rgb(254,218,0)" rx="2" ry="2" /> |
|
<text text-anchor="" x="104.24" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >[li..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI__dl_catch_exception (1 samples, 0.52%)</title><rect x="368.9" y="101" width="6.0" height="15.0" fill="rgb(205,150,26)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="111.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>dlopen (1 samples, 0.52%)</title><rect x="368.9" y="197" width="6.0" height="15.0" fill="rgb(225,154,3)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_dl_start (2 samples, 1.03%)</title><rect x="1177.8" y="373" width="12.2" height="15.0" fill="rgb(213,29,27)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1180.84" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>all (194 samples, 100%)</title><rect x="10.0" y="421" width="1180.0" height="15.0" fill="rgb(232,94,46)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="431.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>benchmark::main (6 samples, 3.09%)</title><rect x="101.2" y="341" width="36.5" height="15.0" fill="rgb(225,171,31)" rx="2" ry="2" /> |
|
<text text-anchor="" x="104.24" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >ben..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::to_chars (17 samples, 8.76%)</title><rect x="253.3" y="197" width="103.4" height="15.0" fill="rgb(240,77,3)" rx="2" ry="2" /> |
|
<text text-anchor="" x="256.30" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::to_chars</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::sys_common::backtrace::__rust_begin_short_backtrace (166 samples, 85.57%)</title><rect x="168.1" y="245" width="1009.7" height="15.0" fill="rgb(211,109,50)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::sys_common::backtrace::__rust_begin_short_backtrace</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[[heap]] (9 samples, 4.64%)</title><rect x="10.0" y="389" width="54.7" height="15.0" fill="rgb(220,92,15)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="399.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >[[hea..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>get_next_result (2 samples, 1.03%)</title><rect x="356.7" y="213" width="12.2" height="15.0" fill="rgb(244,10,11)" rx="2" ry="2" /> |
|
<text text-anchor="" x="359.70" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::__to_chars_i<int> (17 samples, 8.76%)</title><rect x="253.3" y="181" width="103.4" height="15.0" fill="rgb(213,78,53)" rx="2" ry="2" /> |
|
<text text-anchor="" x="256.30" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::__to_ch..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::to_str (3 samples, 1.55%)</title><rect x="46.5" y="373" width="18.2" height="15.0" fill="rgb(225,21,21)" rx="2" ry="2" /> |
|
<text text-anchor="" x="49.49" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::panicking::try (166 samples, 85.57%)</title><rect x="168.1" y="309" width="1009.7" height="15.0" fill="rgb(254,120,42)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="319.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::panicking::try</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[libdl-2.33.so] (1 samples, 0.52%)</title><rect x="368.9" y="133" width="6.0" height="15.0" fill="rgb(234,227,35)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>dl_open_worker (1 samples, 0.52%)</title><rect x="368.9" y="85" width="6.0" height="15.0" fill="rgb(246,179,40)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="95.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_dl_sysdep_start (2 samples, 1.03%)</title><rect x="1177.8" y="357" width="12.2" height="15.0" fill="rgb(253,104,2)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1180.84" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::to_str (111 samples, 57.22%)</title><rect x="502.7" y="213" width="675.1" height="15.0" fill="rgb(246,42,11)" rx="2" ry="2" /> |
|
<text text-anchor="" x="505.68" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::ffi::c_str::CStr::to_str</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_dl_open (1 samples, 0.52%)</title><rect x="368.9" y="117" width="6.0" height="15.0" fill="rgb(239,9,1)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::panic::catch_unwind (166 samples, 85.57%)</title><rect x="168.1" y="325" width="1009.7" height="15.0" fill="rgb(220,218,23)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::panic::catch_unwind</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::converts::from_utf8 (5 samples, 2.58%)</title><rect x="10.0" y="373" width="30.4" height="15.0" fill="rgb(239,28,24)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >co..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI___tunables_init (1 samples, 0.52%)</title><rect x="1177.8" y="341" width="6.1" height="15.0" fill="rgb(252,62,0)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1180.84" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::__detail::__to_chars_10_impl<unsigned int> (7 samples, 3.61%)</title><rect x="277.6" y="149" width="42.6" height="15.0" fill="rgb(250,209,32)" rx="2" ry="2" /> |
|
<text text-anchor="" x="280.63" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std:..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::panicking::try::do_call (166 samples, 85.57%)</title><rect x="168.1" y="293" width="1009.7" height="15.0" fill="rgb(243,187,34)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="303.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::panicking::try::do_call</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::converts::from_utf8 (4 samples, 2.06%)</title><rect x="64.7" y="373" width="24.4" height="15.0" fill="rgb(243,102,0)" rx="2" ry="2" /> |
|
<text text-anchor="" x="67.74" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >c..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>do_lookup_x (1 samples, 0.52%)</title><rect x="368.9" y="37" width="6.0" height="15.0" fill="rgb(229,189,6)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="47.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__libc_start_main (166 samples, 85.57%)</title><rect x="168.1" y="373" width="1009.7" height="15.0" fill="rgb(216,220,53)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__libc_start_main</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::hf7071dbb0abde613 (166 samples, 85.57%)</title><rect x="168.1" y="261" width="1009.7" height="15.0" fill="rgb(220,8,22)" rx="2" ry="2" /> |
|
<text text-anchor="" x="171.14" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::hf7071dbb0abde613</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>libloading::os::unix::Library::open (1 samples, 0.52%)</title><rect x="368.9" y="213" width="6.0" height="15.0" fill="rgb(220,177,30)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::converts::from_utf8 (20 samples, 10.31%)</title><rect x="539.2" y="181" width="121.6" height="15.0" fill="rgb(211,141,37)" rx="2" ry="2" /> |
|
<text text-anchor="" x="542.18" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >core::str::conv..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::converts::from_utf8 (102 samples, 52.58%)</title><rect x="508.8" y="197" width="620.4" height="15.0" fill="rgb(222,114,23)" rx="2" ry="2" /> |
|
<text text-anchor="" x="511.76" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >core::str::converts::from_utf8</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI___libc_malloc (1 samples, 0.52%)</title><rect x="247.2" y="197" width="6.1" height="15.0" fill="rgb(205,82,22)" rx="2" ry="2" /> |
|
<text text-anchor="" x="250.22" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[libdl-2.33.so] (1 samples, 0.52%)</title><rect x="368.9" y="181" width="6.0" height="15.0" fill="rgb(247,86,27)" rx="2" ry="2" /> |
|
<text text-anchor="" x="371.87" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
</svg> |