|
<?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="358" onload="init(evt)" viewBox="0 0 1200 358" 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="358.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="341" 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="341" 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>_itoa_word (2 samples, 0.27%)</title><rect x="40.4" y="245" width="3.2" height="15.0" fill="rgb(208,225,6)" rx="2" ry="2" /> |
|
<text text-anchor="" x="43.38" y="255.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, 0.81%)</title><rect x="157.1" y="261" width="9.6" height="15.0" fill="rgb(240,117,23)" rx="2" ry="2" /> |
|
<text text-anchor="" x="160.10" y="271.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>__sprintf (482 samples, 65.31%)</title><rect x="261.0" y="85" width="770.7" height="15.0" fill="rgb(211,75,26)" rx="2" ry="2" /> |
|
<text text-anchor="" x="264.03" y="95.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__sprintf</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI__IO_default_xsputn (1 samples, 0.14%)</title><rect x="54.8" y="261" width="1.6" height="15.0" fill="rgb(240,45,40)" rx="2" ry="2" /> |
|
<text text-anchor="" x="57.77" y="271.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 (589 samples, 79.81%)</title><rect x="248.2" y="213" width="941.8" height="15.0" fill="rgb(225,16,46)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="223.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>__vfprintf_internal (4 samples, 0.54%)</title><rect x="166.7" y="261" width="6.4" height="15.0" fill="rgb(236,37,4)" rx="2" ry="2" /> |
|
<text text-anchor="" x="169.69" y="271.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 (738 samples, 100.00%)</title><rect x="10.0" y="293" width="1180.0" height="15.0" fill="rgb(209,24,17)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="303.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>__GI__IO_setb (12 samples, 1.63%)</title><rect x="422.5" y="37" width="19.2" height="15.0" fill="rgb(231,198,25)" rx="2" ry="2" /> |
|
<text text-anchor="" x="425.52" 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>benchmark::main (589 samples, 79.81%)</title><rect x="248.2" y="117" width="941.8" height="15.0" fill="rgb(225,120,51)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="127.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>std::panicking::try::do_call (589 samples, 79.81%)</title><rect x="248.2" y="181" width="941.8" height="15.0" fill="rgb(222,208,24)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="191.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>get_bulk (2 samples, 0.27%)</title><rect x="182.7" y="261" width="3.2" height="15.0" fill="rgb(207,105,25)" rx="2" ry="2" /> |
|
<text text-anchor="" x="185.68" y="271.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 (6 samples, 0.81%)</title><rect x="43.6" y="261" width="9.6" height="15.0" fill="rgb(245,49,29)" rx="2" ry="2" /> |
|
<text text-anchor="" x="46.58" y="271.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 (21 samples, 2.85%)</title><rect x="1078.1" y="69" width="33.6" height="15.0" fill="rgb(207,68,18)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1081.08" y="79.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>[unknown] (55 samples, 7.45%)</title><rect x="97.9" y="277" width="88.0" height="15.0" fill="rgb(240,18,40)" rx="2" ry="2" /> |
|
<text text-anchor="" x="100.94" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >[unknown]</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_fini (34 samples, 4.61%)</title><rect x="185.9" y="277" width="54.3" height="15.0" fill="rgb(206,118,3)" rx="2" ry="2" /> |
|
<text text-anchor="" x="188.88" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_fini</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__sprintf (3 samples, 0.41%)</title><rect x="93.1" y="261" width="4.8" height="15.0" fill="rgb(251,95,37)" rx="2" ry="2" /> |
|
<text text-anchor="" x="96.14" y="271.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>_IO_old_init (19 samples, 2.57%)</title><rect x="357.0" y="37" width="30.3" height="15.0" fill="rgb(225,81,13)" rx="2" ry="2" /> |
|
<text text-anchor="" x="359.96" y="47.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_I..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_IO_str_init_static_internal (18 samples, 2.44%)</title><rect x="110.7" y="261" width="28.8" height="15.0" fill="rgb(231,31,12)" rx="2" ry="2" /> |
|
<text text-anchor="" x="113.73" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_I..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::to_str (1 samples, 0.14%)</title><rect x="53.2" y="261" width="1.6" height="15.0" fill="rgb(239,133,32)" rx="2" ry="2" /> |
|
<text text-anchor="" x="56.17" y="271.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>main (589 samples, 79.81%)</title><rect x="248.2" y="245" width="941.8" height="15.0" fill="rgb(233,115,22)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="255.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::to_bytes (4 samples, 0.54%)</title><rect x="1183.6" y="85" width="6.4" height="15.0" fill="rgb(212,169,53)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1186.60" 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>core::str::converts::from_utf8 (71 samples, 9.62%)</title><rect x="1070.1" y="85" width="113.5" height="15.0" fill="rgb(244,3,45)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1073.08" y="95.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >core::str::con..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::validations::run_utf8_validation (45 samples, 6.10%)</title><rect x="1111.7" y="69" width="71.9" height="15.0" fill="rgb(218,157,7)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1114.65" y="79.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >core::st..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_fini (5 samples, 0.68%)</title><rect x="35.6" y="261" width="8.0" height="15.0" fill="rgb(254,128,49)" rx="2" ry="2" /> |
|
<text text-anchor="" x="38.58" y="271.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 (1 samples, 0.14%)</title><rect x="91.5" y="261" width="1.6" height="15.0" fill="rgb(233,222,5)" rx="2" ry="2" /> |
|
<text text-anchor="" x="94.54" y="271.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 (589 samples, 79.81%)</title><rect x="248.2" y="261" width="941.8" height="15.0" fill="rgb(219,108,42)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="271.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>__vfprintf_internal (369 samples, 50.00%)</title><rect x="441.7" y="53" width="590.0" height="15.0" fill="rgb(222,97,6)" rx="2" ry="2" /> |
|
<text text-anchor="" x="444.71" y="63.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__vfprintf_internal</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[libc-2.33.so] (9 samples, 1.22%)</title><rect x="740.7" y="37" width="14.4" height="15.0" fill="rgb(238,93,52)" rx="2" ry="2" /> |
|
<text text-anchor="" x="743.70" 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>std::sys_common::backtrace::__rust_begin_short_backtrace (589 samples, 79.81%)</title><rect x="248.2" y="133" width="941.8" height="15.0" fill="rgb(245,183,50)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="143.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>_dl_map_object_from_fd (1 samples, 0.14%)</title><rect x="181.1" y="261" width="1.6" height="15.0" fill="rgb(245,106,28)" rx="2" ry="2" /> |
|
<text text-anchor="" x="184.08" y="271.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>__GI__IO_default_xsputn (17 samples, 2.30%)</title><rect x="185.9" y="261" width="27.2" height="15.0" fill="rgb(212,227,2)" rx="2" ry="2" /> |
|
<text text-anchor="" x="188.88" y="271.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 (738 samples, 100%)</title><rect x="10.0" y="309" width="1180.0" height="15.0" fill="rgb(251,49,20)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="319.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>_IO_str_init_static_internal (34 samples, 4.61%)</title><rect x="387.3" y="53" width="54.4" height="15.0" fill="rgb(206,126,0)" rx="2" ry="2" /> |
|
<text text-anchor="" x="390.34" y="63.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_IO_s..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>get_bulk (488 samples, 66.12%)</title><rect x="256.2" y="101" width="780.3" height="15.0" fill="rgb(228,184,17)" rx="2" ry="2" /> |
|
<text text-anchor="" x="259.23" y="111.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>__vsprintf_internal (5 samples, 0.68%)</title><rect x="173.1" y="261" width="8.0" height="15.0" fill="rgb(220,1,38)" rx="2" ry="2" /> |
|
<text text-anchor="" x="176.09" y="271.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 (3 samples, 0.41%)</title><rect x="86.7" y="261" width="4.8" height="15.0" fill="rgb(236,144,3)" rx="2" ry="2" /> |
|
<text text-anchor="" x="89.75" y="271.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>_IO_no_init (8 samples, 1.08%)</title><rect x="97.9" y="261" width="12.8" height="15.0" fill="rgb(206,64,22)" rx="2" ry="2" /> |
|
<text text-anchor="" x="100.94" y="271.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>__vfprintf_internal (7 samples, 0.95%)</title><rect x="59.6" y="245" width="11.2" height="15.0" fill="rgb(233,109,30)" rx="2" ry="2" /> |
|
<text text-anchor="" x="62.57" y="255.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>sprintf@plt (3 samples, 0.41%)</title><rect x="1031.7" y="85" width="4.8" height="15.0" fill="rgb(232,208,38)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1034.71" 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>benchmark::main (6 samples, 0.81%)</title><rect x="157.1" y="229" width="9.6" height="15.0" fill="rgb(220,45,21)" rx="2" ry="2" /> |
|
<text text-anchor="" x="160.10" y="239.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>__GI__IO_setb (16 samples, 2.17%)</title><rect x="10.0" y="261" width="25.6" height="15.0" fill="rgb(230,140,50)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="271.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::rt::lang_start_internal (589 samples, 79.81%)</title><rect x="248.2" y="229" width="941.8" height="15.0" fill="rgb(225,5,1)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="239.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>std::ffi::c_str::CStr::from_ptr (19 samples, 2.57%)</title><rect x="1039.7" y="101" width="30.4" height="15.0" fill="rgb(221,176,27)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1042.70" y="111.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >st..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__vsprintf_internal (459 samples, 62.20%)</title><rect x="297.8" y="69" width="733.9" height="15.0" fill="rgb(218,79,40)" rx="2" ry="2" /> |
|
<text text-anchor="" x="300.80" y="79.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__vsprintf_internal</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>__GI___libc_free (1 samples, 0.14%)</title><rect x="254.6" y="85" width="1.6" height="15.0" fill="rgb(230,25,45)" rx="2" ry="2" /> |
|
<text text-anchor="" x="257.63" 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>_start (594 samples, 80.49%)</title><rect x="240.2" y="277" width="949.8" height="15.0" fill="rgb(237,159,4)" rx="2" ry="2" /> |
|
<text text-anchor="" x="243.24" y="287.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>__vsprintf_internal (9 samples, 1.22%)</title><rect x="225.9" y="261" width="14.3" height="15.0" fill="rgb(222,59,27)" rx="2" ry="2" /> |
|
<text text-anchor="" x="228.85" y="271.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>get_next_result (2 samples, 0.27%)</title><rect x="1036.5" y="101" width="3.2" height="15.0" fill="rgb(248,148,18)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1039.50" 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>__strchrnul_avx2 (29 samples, 3.93%)</title><rect x="943.8" y="37" width="46.3" height="15.0" fill="rgb(249,66,18)" rx="2" ry="2" /> |
|
<text text-anchor="" x="946.77" y="47.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__st..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::ffi::c_str::CStr::to_str (75 samples, 10.16%)</title><rect x="1070.1" y="101" width="119.9" height="15.0" fill="rgb(231,228,35)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1073.08" y="111.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >std::ffi::c_st..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[libmydriver-c.so] (3 samples, 0.41%)</title><rect x="93.1" y="277" width="4.8" height="15.0" fill="rgb(245,110,34)" rx="2" ry="2" /> |
|
<text text-anchor="" x="96.14" y="287.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::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::hf7071dbb0abde613 (589 samples, 79.81%)</title><rect x="248.2" y="149" width="941.8" height="15.0" fill="rgb(251,88,5)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="159.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>__GI__IO_default_xsputn (11 samples, 1.49%)</title><rect x="139.5" y="261" width="17.6" height="15.0" fill="rgb(251,74,40)" rx="2" ry="2" /> |
|
<text text-anchor="" x="142.51" y="271.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>__sprintf (2 samples, 0.27%)</title><rect x="56.4" y="261" width="3.2" height="15.0" fill="rgb(235,1,54)" rx="2" ry="2" /> |
|
<text text-anchor="" x="59.37" y="271.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>free_result (1 samples, 0.14%)</title><rect x="254.6" y="101" width="1.6" height="15.0" fill="rgb(210,39,10)" rx="2" ry="2" /> |
|
<text text-anchor="" x="257.63" 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>__strlen_avx2 (19 samples, 2.57%)</title><rect x="1039.7" y="85" width="30.4" height="15.0" fill="rgb(217,64,6)" rx="2" ry="2" /> |
|
<text text-anchor="" x="1042.70" 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>__GI__IO_default_xsputn (118 samples, 15.99%)</title><rect x="755.1" y="37" width="188.7" height="15.0" fill="rgb(248,1,35)" rx="2" ry="2" /> |
|
<text text-anchor="" x="758.09" y="47.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >__GI__IO_default_xsputn</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>core::str::converts::from_utf8 (10 samples, 1.36%)</title><rect x="70.8" y="261" width="15.9" height="15.0" fill="rgb(237,164,16)" rx="2" ry="2" /> |
|
<text text-anchor="" x="73.76" y="271.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::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once (589 samples, 79.81%)</title><rect x="248.2" y="165" width="941.8" height="15.0" fill="rgb(216,24,37)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="175.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>_itoa_word (26 samples, 3.52%)</title><rect x="990.1" y="37" width="41.6" height="15.0" fill="rgb(253,220,39)" rx="2" ry="2" /> |
|
<text text-anchor="" x="993.14" y="47.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_it..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>[[heap]] (28 samples, 3.79%)</title><rect x="10.0" y="277" width="44.8" height="15.0" fill="rgb(235,216,14)" rx="2" ry="2" /> |
|
<text text-anchor="" x="13.00" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >[[he..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>std::panicking::try (589 samples, 79.81%)</title><rect x="248.2" y="197" width="941.8" height="15.0" fill="rgb(225,87,3)" rx="2" ry="2" /> |
|
<text text-anchor="" x="251.24" y="207.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>[[stack]] (24 samples, 3.25%)</title><rect x="54.8" y="277" width="38.3" height="15.0" fill="rgb(225,66,15)" rx="2" ry="2" /> |
|
<text text-anchor="" x="57.77" y="287.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>[libpthread-2.33.so] (6 samples, 0.81%)</title><rect x="157.1" y="245" width="9.6" height="15.0" fill="rgb(233,137,10)" rx="2" ry="2" /> |
|
<text text-anchor="" x="160.10" y="255.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>_IO_no_init (25 samples, 3.39%)</title><rect x="347.4" y="53" width="39.9" height="15.0" fill="rgb(220,186,3)" rx="2" ry="2" /> |
|
<text text-anchor="" x="350.37" y="63.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >_IO..</text> |
|
</g> |
|
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)"> |
|
<title>_fini (7 samples, 0.95%)</title><rect x="59.6" y="261" width="11.2" height="15.0" fill="rgb(243,139,42)" rx="2" ry="2" /> |
|
<text text-anchor="" x="62.57" y="271.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_free (1 samples, 0.14%)</title><rect x="254.6" y="69" width="1.6" height="15.0" fill="rgb(208,62,4)" rx="2" ry="2" /> |
|
<text text-anchor="" x="257.63" 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>__strchrnul_avx2 (3 samples, 0.41%)</title><rect x="35.6" y="245" width="4.8" height="15.0" fill="rgb(238,132,39)" rx="2" ry="2" /> |
|
<text text-anchor="" x="38.58" y="255.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>__vfprintf_internal (8 samples, 1.08%)</title><rect x="213.1" y="261" width="12.8" height="15.0" fill="rgb(240,123,44)" rx="2" ry="2" /> |
|
<text text-anchor="" x="216.06" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text> |
|
</g> |
|
</svg> |