perf.svg 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902
  1. <?xml version="1.0" standalone="no"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  3. <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">
  4. <!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. -->
  5. <!-- NOTES: -->
  6. <defs>
  7. <linearGradient id="background" y1="0" y2="1" x1="0" x2="0" >
  8. <stop stop-color="#eeeeee" offset="5%" />
  9. <stop stop-color="#eeeeb0" offset="95%" />
  10. </linearGradient>
  11. </defs>
  12. <style type="text/css">
  13. text { font-family:Verdana; font-size:12px; fill:rgb(0,0,0); }
  14. #search { opacity:0.1; cursor:pointer; }
  15. #search:hover, #search.show { opacity:1; }
  16. #subtitle { text-anchor:middle; font-color:rgb(160,160,160); }
  17. #title { text-anchor:middle; font-size:17px}
  18. #unzoom { cursor:pointer; }
  19. #frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }
  20. .hide { display:none; }
  21. .parent { opacity:0.5; }
  22. </style>
  23. <script type="text/ecmascript">
  24. <![CDATA[
  25. "use strict";
  26. var details, searchbtn, unzoombtn, matchedtxt, svg, searching;
  27. function init(evt) {
  28. details = document.getElementById("details").firstChild;
  29. searchbtn = document.getElementById("search");
  30. unzoombtn = document.getElementById("unzoom");
  31. matchedtxt = document.getElementById("matched");
  32. svg = document.getElementsByTagName("svg")[0];
  33. searching = 0;
  34. }
  35. window.addEventListener("click", function(e) {
  36. var target = find_group(e.target);
  37. if (target) {
  38. if (target.nodeName == "a") {
  39. if (e.ctrlKey === false) return;
  40. e.preventDefault();
  41. }
  42. if (target.classList.contains("parent")) unzoom();
  43. zoom(target);
  44. }
  45. else if (e.target.id == "unzoom") unzoom();
  46. else if (e.target.id == "search") search_prompt();
  47. }, false)
  48. // mouse-over for info
  49. // show
  50. window.addEventListener("mouseover", function(e) {
  51. var target = find_group(e.target);
  52. if (target) details.nodeValue = "Function: " + g_to_text(target);
  53. }, false)
  54. // clear
  55. window.addEventListener("mouseout", function(e) {
  56. var target = find_group(e.target);
  57. if (target) details.nodeValue = ' ';
  58. }, false)
  59. // ctrl-F for search
  60. window.addEventListener("keydown",function (e) {
  61. if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
  62. e.preventDefault();
  63. search_prompt();
  64. }
  65. }, false)
  66. // functions
  67. function find_child(node, selector) {
  68. var children = node.querySelectorAll(selector);
  69. if (children.length) return children[0];
  70. return;
  71. }
  72. function find_group(node) {
  73. var parent = node.parentElement;
  74. if (!parent) return;
  75. if (parent.id == "frames") return node;
  76. return find_group(parent);
  77. }
  78. function orig_save(e, attr, val) {
  79. if (e.attributes["_orig_" + attr] != undefined) return;
  80. if (e.attributes[attr] == undefined) return;
  81. if (val == undefined) val = e.attributes[attr].value;
  82. e.setAttribute("_orig_" + attr, val);
  83. }
  84. function orig_load(e, attr) {
  85. if (e.attributes["_orig_"+attr] == undefined) return;
  86. e.attributes[attr].value = e.attributes["_orig_" + attr].value;
  87. e.removeAttribute("_orig_"+attr);
  88. }
  89. function g_to_text(e) {
  90. var text = find_child(e, "title").firstChild.nodeValue;
  91. return (text)
  92. }
  93. function g_to_func(e) {
  94. var func = g_to_text(e);
  95. // if there's any manipulation we want to do to the function
  96. // name before it's searched, do it here before returning.
  97. return (func);
  98. }
  99. function update_text(e) {
  100. var r = find_child(e, "rect");
  101. var t = find_child(e, "text");
  102. var w = parseFloat(r.attributes.width.value) -3;
  103. var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,"");
  104. t.attributes.x.value = parseFloat(r.attributes.x.value) + 3;
  105. // Smaller than this size won't fit anything
  106. if (w < 2 * 12 * 0.59) {
  107. t.textContent = "";
  108. return;
  109. }
  110. t.textContent = txt;
  111. // Fit in full text width
  112. if (/^ *$/.test(txt) || t.getSubStringLength(0, txt.length) < w)
  113. return;
  114. for (var x = txt.length - 2; x > 0; x--) {
  115. if (t.getSubStringLength(0, x + 2) <= w) {
  116. t.textContent = txt.substring(0, x) + "..";
  117. return;
  118. }
  119. }
  120. t.textContent = "";
  121. }
  122. // zoom
  123. function zoom_reset(e) {
  124. if (e.attributes != undefined) {
  125. orig_load(e, "x");
  126. orig_load(e, "width");
  127. }
  128. if (e.childNodes == undefined) return;
  129. for (var i = 0, c = e.childNodes; i < c.length; i++) {
  130. zoom_reset(c[i]);
  131. }
  132. }
  133. function zoom_child(e, x, ratio) {
  134. if (e.attributes != undefined) {
  135. if (e.attributes.x != undefined) {
  136. orig_save(e, "x");
  137. e.attributes.x.value = (parseFloat(e.attributes.x.value) - x - 10) * ratio + 10;
  138. if (e.tagName == "text")
  139. e.attributes.x.value = find_child(e.parentNode, "rect[x]").attributes.x.value + 3;
  140. }
  141. if (e.attributes.width != undefined) {
  142. orig_save(e, "width");
  143. e.attributes.width.value = parseFloat(e.attributes.width.value) * ratio;
  144. }
  145. }
  146. if (e.childNodes == undefined) return;
  147. for (var i = 0, c = e.childNodes; i < c.length; i++) {
  148. zoom_child(c[i], x - 10, ratio);
  149. }
  150. }
  151. function zoom_parent(e) {
  152. if (e.attributes) {
  153. if (e.attributes.x != undefined) {
  154. orig_save(e, "x");
  155. e.attributes.x.value = 10;
  156. }
  157. if (e.attributes.width != undefined) {
  158. orig_save(e, "width");
  159. e.attributes.width.value = parseInt(svg.width.baseVal.value) - (10 * 2);
  160. }
  161. }
  162. if (e.childNodes == undefined) return;
  163. for (var i = 0, c = e.childNodes; i < c.length; i++) {
  164. zoom_parent(c[i]);
  165. }
  166. }
  167. function zoom(node) {
  168. var attr = find_child(node, "rect").attributes;
  169. var width = parseFloat(attr.width.value);
  170. var xmin = parseFloat(attr.x.value);
  171. var xmax = parseFloat(xmin + width);
  172. var ymin = parseFloat(attr.y.value);
  173. var ratio = (svg.width.baseVal.value - 2 * 10) / width;
  174. // XXX: Workaround for JavaScript float issues (fix me)
  175. var fudge = 0.0001;
  176. unzoombtn.classList.remove("hide");
  177. var el = document.getElementById("frames").children;
  178. for (var i = 0; i < el.length; i++) {
  179. var e = el[i];
  180. var a = find_child(e, "rect").attributes;
  181. var ex = parseFloat(a.x.value);
  182. var ew = parseFloat(a.width.value);
  183. var upstack;
  184. // Is it an ancestor
  185. if (0 == 0) {
  186. upstack = parseFloat(a.y.value) > ymin;
  187. } else {
  188. upstack = parseFloat(a.y.value) < ymin;
  189. }
  190. if (upstack) {
  191. // Direct ancestor
  192. if (ex <= xmin && (ex+ew+fudge) >= xmax) {
  193. e.classList.add("parent");
  194. zoom_parent(e);
  195. update_text(e);
  196. }
  197. // not in current path
  198. else
  199. e.classList.add("hide");
  200. }
  201. // Children maybe
  202. else {
  203. // no common path
  204. if (ex < xmin || ex + fudge >= xmax) {
  205. e.classList.add("hide");
  206. }
  207. else {
  208. zoom_child(e, xmin, ratio);
  209. update_text(e);
  210. }
  211. }
  212. }
  213. }
  214. function unzoom() {
  215. unzoombtn.classList.add("hide");
  216. var el = document.getElementById("frames").children;
  217. for(var i = 0; i < el.length; i++) {
  218. el[i].classList.remove("parent");
  219. el[i].classList.remove("hide");
  220. zoom_reset(el[i]);
  221. update_text(el[i]);
  222. }
  223. }
  224. // search
  225. function reset_search() {
  226. var el = document.querySelectorAll("#frames rect");
  227. for (var i = 0; i < el.length; i++) {
  228. orig_load(el[i], "fill")
  229. }
  230. }
  231. function search_prompt() {
  232. if (!searching) {
  233. var term = prompt("Enter a search term (regexp " +
  234. "allowed, eg: ^ext4_)", "");
  235. if (term != null) {
  236. search(term)
  237. }
  238. } else {
  239. reset_search();
  240. searching = 0;
  241. searchbtn.classList.remove("show");
  242. searchbtn.firstChild.nodeValue = "Search"
  243. matchedtxt.classList.add("hide");
  244. matchedtxt.firstChild.nodeValue = ""
  245. }
  246. }
  247. function search(term) {
  248. var re = new RegExp(term);
  249. var el = document.getElementById("frames").children;
  250. var matches = new Object();
  251. var maxwidth = 0;
  252. for (var i = 0; i < el.length; i++) {
  253. var e = el[i];
  254. var func = g_to_func(e);
  255. var rect = find_child(e, "rect");
  256. if (func == null || rect == null)
  257. continue;
  258. // Save max width. Only works as we have a root frame
  259. var w = parseFloat(rect.attributes.width.value);
  260. if (w > maxwidth)
  261. maxwidth = w;
  262. if (func.match(re)) {
  263. // highlight
  264. var x = parseFloat(rect.attributes.x.value);
  265. orig_save(rect, "fill");
  266. rect.attributes.fill.value = "rgb(230,0,230)";
  267. // remember matches
  268. if (matches[x] == undefined) {
  269. matches[x] = w;
  270. } else {
  271. if (w > matches[x]) {
  272. // overwrite with parent
  273. matches[x] = w;
  274. }
  275. }
  276. searching = 1;
  277. }
  278. }
  279. if (!searching)
  280. return;
  281. searchbtn.classList.add("show");
  282. searchbtn.firstChild.nodeValue = "Reset Search";
  283. // calculate percent matched, excluding vertical overlap
  284. var count = 0;
  285. var lastx = -1;
  286. var lastw = 0;
  287. var keys = Array();
  288. for (k in matches) {
  289. if (matches.hasOwnProperty(k))
  290. keys.push(k);
  291. }
  292. // sort the matched frames by their x location
  293. // ascending, then width descending
  294. keys.sort(function(a, b){
  295. return a - b;
  296. });
  297. // Step through frames saving only the biggest bottom-up frames
  298. // thanks to the sort order. This relies on the tree property
  299. // where children are always smaller than their parents.
  300. var fudge = 0.0001; // JavaScript floating point
  301. for (var k in keys) {
  302. var x = parseFloat(keys[k]);
  303. var w = matches[keys[k]];
  304. if (x >= lastx + lastw - fudge) {
  305. count += w;
  306. lastx = x;
  307. lastw = w;
  308. }
  309. }
  310. // display matched percent
  311. matchedtxt.classList.remove("hide");
  312. var pct = 100 * count / maxwidth;
  313. if (pct != 100) pct = pct.toFixed(1)
  314. matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%";
  315. }
  316. ]]>
  317. </script>
  318. <rect x="0.0" y="0" width="1200.0" height="470.0" fill="url(#background)" />
  319. <text id="title" x="600.00" y="24" >Download CPU Profile</text>
  320. <text id="details" x="10.00" y="453" > </text>
  321. <text id="unzoom" x="10.00" y="24" class="hide">Reset Zoom</text>
  322. <text id="search" x="1090.00" y="24" >Search</text>
  323. <text id="matched" x="1090.00" y="453" > </text>
  324. <g id="frames">
  325. <g >
  326. <title>MainThread`&lt;module&gt; (10 samples, 0.02%)</title><rect x="10.0" y="165" width="0.2" height="15.0" fill="rgb(231,156,42)" rx="2" ry="2" />
  327. <text x="13.02" y="175.5" ></text>
  328. </g>
  329. <g >
  330. <title>MainThread`_real_close (51 samples, 0.10%)</title><rect x="16.6" y="133" width="1.2" height="15.0" fill="rgb(247,194,37)" rx="2" ry="2" />
  331. <text x="19.61" y="143.5" ></text>
  332. </g>
  333. <g >
  334. <title>MainThread`_update_chunk_length (7,078 samples, 13.44%)</title><rect x="39.9" y="181" width="158.7" height="15.0" fill="rgb(214,117,12)" rx="2" ry="2" />
  335. <text x="42.94" y="191.5" >MainThread`_update_c..</text>
  336. </g>
  337. <g >
  338. <title>MainThread`_create (27 samples, 0.05%)</title><rect x="15.0" y="133" width="0.6" height="15.0" fill="rgb(253,11,46)" rx="2" ry="2" />
  339. <text x="18.04" y="143.5" ></text>
  340. </g>
  341. <g >
  342. <title>MainThread`_handle_fromlist (6 samples, 0.01%)</title><rect x="10.1" y="149" width="0.1" height="15.0" fill="rgb(225,218,2)" rx="2" ry="2" />
  343. <text x="13.11" y="159.5" ></text>
  344. </g>
  345. <g >
  346. <title>MainThread`request (31,862 samples, 60.52%)</title><rect x="17.8" y="277" width="714.1" height="15.0" fill="rgb(215,88,10)" rx="2" ry="2" />
  347. <text x="20.76" y="287.5" >MainThread`request</text>
  348. </g>
  349. <g >
  350. <title>MainThread`recv_into (7,078 samples, 13.44%)</title><rect x="39.9" y="149" width="158.7" height="15.0" fill="rgb(251,193,27)" rx="2" ry="2" />
  351. <text x="42.94" y="159.5" >MainThread`recv_into</text>
  352. </g>
  353. <g >
  354. <title>MainThread`__init__ (9 samples, 0.02%)</title><rect x="10.4" y="309" width="0.2" height="15.0" fill="rgb(212,144,15)" rx="2" ry="2" />
  355. <text x="13.45" y="319.5" ></text>
  356. </g>
  357. <g >
  358. <title>MainThread`read (13,117 samples, 24.91%)</title><rect x="435.0" y="117" width="294.0" height="15.0" fill="rgb(218,173,29)" rx="2" ry="2" />
  359. <text x="437.96" y="127.5" >MainThread`read</text>
  360. </g>
  361. <g >
  362. <title>MainThread`_new_conn (2,478 samples, 4.71%)</title><rect x="198.8" y="165" width="55.5" height="15.0" fill="rgb(225,152,13)" rx="2" ry="2" />
  363. <text x="201.77" y="175.5" >MainT..</text>
  364. </g>
  365. <g >
  366. <title>MainThread`create_connection (12 samples, 0.02%)</title><rect x="14.7" y="149" width="0.3" height="15.0" fill="rgb(223,111,19)" rx="2" ry="2" />
  367. <text x="17.71" y="159.5" ></text>
  368. </g>
  369. <g >
  370. <title>MainThread`_make_request (85 samples, 0.16%)</title><rect x="14.7" y="213" width="1.9" height="15.0" fill="rgb(207,197,19)" rx="2" ry="2" />
  371. <text x="17.71" y="223.5" ></text>
  372. </g>
  373. <g >
  374. <title>MainThread`loads (25 samples, 0.05%)</title><rect x="731.9" y="309" width="0.6" height="15.0" fill="rgb(211,134,50)" rx="2" ry="2" />
  375. <text x="734.89" y="319.5" ></text>
  376. </g>
  377. <g >
  378. <title>MainThread`read (43 samples, 0.08%)</title><rect x="15.6" y="117" width="1.0" height="15.0" fill="rgb(222,115,27)" rx="2" ry="2" />
  379. <text x="18.65" y="127.5" ></text>
  380. </g>
  381. <g >
  382. <title>MainThread`send (31,691 samples, 60.20%)</title><rect x="21.6" y="261" width="710.3" height="15.0" fill="rgb(218,225,48)" rx="2" ry="2" />
  383. <text x="24.59" y="271.5" >MainThread`send</text>
  384. </g>
  385. <g >
  386. <title>MainThread`readinto (162 samples, 0.31%)</title><rect x="11.1" y="165" width="3.6" height="15.0" fill="rgb(237,30,11)" rx="2" ry="2" />
  387. <text x="14.08" y="175.5" ></text>
  388. </g>
  389. <g >
  390. <title>MainThread`begin (43 samples, 0.08%)</title><rect x="15.6" y="181" width="1.0" height="15.0" fill="rgb(249,121,49)" rx="2" ry="2" />
  391. <text x="18.65" y="191.5" ></text>
  392. </g>
  393. <g >
  394. <title>MainThread`exists (10 samples, 0.02%)</title><rect x="21.4" y="229" width="0.2" height="15.0" fill="rgb(220,177,52)" rx="2" ry="2" />
  395. <text x="24.36" y="239.5" ></text>
  396. </g>
  397. <g >
  398. <title>MainThread`send (264 samples, 0.50%)</title><rect x="10.7" y="261" width="5.9" height="15.0" fill="rgb(213,52,15)" rx="2" ry="2" />
  399. <text x="13.69" y="271.5" ></text>
  400. </g>
  401. <g >
  402. <title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="245" width="1.2" height="15.0" fill="rgb(246,149,28)" rx="2" ry="2" />
  403. <text x="19.61" y="255.5" ></text>
  404. </g>
  405. <g >
  406. <title>MainThread`parse_headers (66 samples, 0.13%)</title><rect x="729.0" y="165" width="1.4" height="15.0" fill="rgb(224,42,32)" rx="2" ry="2" />
  407. <text x="731.96" y="175.5" ></text>
  408. </g>
  409. <g >
  410. <title>MainThread`decode (25 samples, 0.05%)</title><rect x="731.9" y="293" width="0.6" height="15.0" fill="rgb(237,61,21)" rx="2" ry="2" />
  411. <text x="734.89" y="303.5" ></text>
  412. </g>
  413. <g >
  414. <title>MainThread`_handle_chunk (605 samples, 1.15%)</title><rect x="26.4" y="181" width="13.5" height="15.0" fill="rgb(247,31,39)" rx="2" ry="2" />
  415. <text x="29.38" y="191.5" ></text>
  416. </g>
  417. <g >
  418. <title>MainThread`request (65 samples, 0.12%)</title><rect x="730.4" y="197" width="1.5" height="15.0" fill="rgb(236,53,13)" rx="2" ry="2" />
  419. <text x="733.43" y="207.5" ></text>
  420. </g>
  421. <g >
  422. <title>MainThread`get (31,913 samples, 60.62%)</title><rect x="16.6" y="309" width="715.3" height="15.0" fill="rgb(243,112,12)" rx="2" ry="2" />
  423. <text x="19.61" y="319.5" >MainThread`get</text>
  424. </g>
  425. <g >
  426. <title>MainThread`read (7,078 samples, 13.44%)</title><rect x="39.9" y="133" width="158.7" height="15.0" fill="rgb(247,170,50)" rx="2" ry="2" />
  427. <text x="42.94" y="143.5" >MainThread`read</text>
  428. </g>
  429. <g >
  430. <title>MainThread`_safe_read (8 samples, 0.02%)</title><rect x="10.9" y="165" width="0.2" height="15.0" fill="rgb(226,127,4)" rx="2" ry="2" />
  431. <text x="13.90" y="175.5" ></text>
  432. </g>
  433. <g >
  434. <title>MainThread`_safe_read (605 samples, 1.15%)</title><rect x="26.4" y="165" width="13.5" height="15.0" fill="rgb(227,4,47)" rx="2" ry="2" />
  435. <text x="29.38" y="175.5" ></text>
  436. </g>
  437. <g >
  438. <title>MainThread`save (20,413 samples, 38.77%)</title><rect x="732.5" y="325" width="457.5" height="15.0" fill="rgb(220,182,4)" rx="2" ry="2" />
  439. <text x="735.45" y="335.5" >MainThread`save</text>
  440. </g>
  441. <g >
  442. <title>MainThread`recv_into (66 samples, 0.13%)</title><rect x="729.0" y="133" width="1.4" height="15.0" fill="rgb(234,20,26)" rx="2" ry="2" />
  443. <text x="731.96" y="143.5" ></text>
  444. </g>
  445. <g >
  446. <title>MainThread`_read_status (13,117 samples, 24.91%)</title><rect x="435.0" y="165" width="294.0" height="15.0" fill="rgb(216,177,44)" rx="2" ry="2" />
  447. <text x="437.96" y="175.5" >MainThread`_read_status</text>
  448. </g>
  449. <g >
  450. <title>MainThread`readinto (43 samples, 0.08%)</title><rect x="15.6" y="149" width="1.0" height="15.0" fill="rgb(240,91,22)" rx="2" ry="2" />
  451. <text x="18.65" y="159.5" ></text>
  452. </g>
  453. <g >
  454. <title>MainThread`&lt;module&gt; (52,647 samples, 100.00%)</title><rect x="10.0" y="389" width="1180.0" height="15.0" fill="rgb(253,215,33)" rx="2" ry="2" />
  455. <text x="13.00" y="399.5" >MainThread`&lt;module&gt;</text>
  456. </g>
  457. <g >
  458. <title>MainThread`_send_request (65 samples, 0.12%)</title><rect x="730.4" y="181" width="1.5" height="15.0" fill="rgb(241,184,40)" rx="2" ry="2" />
  459. <text x="733.43" y="191.5" ></text>
  460. </g>
  461. <g >
  462. <title>MainThread`read_chunked (7,897 samples, 15.00%)</title><rect x="21.6" y="197" width="177.0" height="15.0" fill="rgb(232,133,22)" rx="2" ry="2" />
  463. <text x="24.59" y="207.5" >MainThread`read_chunked</text>
  464. </g>
  465. <g >
  466. <title>MainThread`&lt;lambda&gt; (51 samples, 0.10%)</title><rect x="16.6" y="197" width="1.2" height="15.0" fill="rgb(233,141,12)" rx="2" ry="2" />
  467. <text x="19.61" y="207.5" ></text>
  468. </g>
  469. <g >
  470. <title>MainThread`send (23,794 samples, 45.20%)</title><rect x="198.6" y="245" width="533.3" height="15.0" fill="rgb(213,171,48)" rx="2" ry="2" />
  471. <text x="201.59" y="255.5" >MainThread`send</text>
  472. </g>
  473. <g >
  474. <title>MainThread`_parse (9 samples, 0.02%)</title><rect x="21.2" y="213" width="0.2" height="15.0" fill="rgb(210,216,19)" rx="2" ry="2" />
  475. <text x="24.16" y="223.5" ></text>
  476. </g>
  477. <g >
  478. <title>all (52,647 samples, 100%)</title><rect x="10.0" y="421" width="1180.0" height="15.0" fill="rgb(233,8,13)" rx="2" ry="2" />
  479. <text x="13.00" y="431.5" ></text>
  480. </g>
  481. <g >
  482. <title>MainThread`send (65 samples, 0.12%)</title><rect x="730.4" y="101" width="1.5" height="15.0" fill="rgb(224,168,52)" rx="2" ry="2" />
  483. <text x="733.43" y="111.5" ></text>
  484. </g>
  485. <g >
  486. <title>MainThread`clear (51 samples, 0.10%)</title><rect x="16.6" y="229" width="1.2" height="15.0" fill="rgb(245,74,47)" rx="2" ry="2" />
  487. <text x="19.61" y="239.5" ></text>
  488. </g>
  489. <g >
  490. <title>MainThread`send (65 samples, 0.12%)</title><rect x="730.4" y="133" width="1.5" height="15.0" fill="rgb(238,195,32)" rx="2" ry="2" />
  491. <text x="733.43" y="143.5" ></text>
  492. </g>
  493. <g >
  494. <title>MainThread`generate (7,897 samples, 15.00%)</title><rect x="21.6" y="229" width="177.0" height="15.0" fill="rgb(210,35,42)" rx="2" ry="2" />
  495. <text x="24.59" y="239.5" >MainThread`generate</text>
  496. </g>
  497. <g >
  498. <title>MainThread`&lt;module&gt; (6 samples, 0.01%)</title><rect x="10.1" y="37" width="0.1" height="15.0" fill="rgb(206,2,39)" rx="2" ry="2" />
  499. <text x="13.11" y="47.5" ></text>
  500. </g>
  501. <g >
  502. <title>MainThread`readinto (66 samples, 0.13%)</title><rect x="729.0" y="149" width="1.4" height="15.0" fill="rgb(205,78,30)" rx="2" ry="2" />
  503. <text x="731.96" y="159.5" ></text>
  504. </g>
  505. <g >
  506. <title>MainThread`request (266 samples, 0.51%)</title><rect x="10.6" y="293" width="6.0" height="15.0" fill="rgb(210,68,7)" rx="2" ry="2" />
  507. <text x="13.65" y="303.5" ></text>
  508. </g>
  509. <g >
  510. <title>MainThread`_validate_conn (42 samples, 0.08%)</title><rect x="14.7" y="197" width="0.9" height="15.0" fill="rgb(228,137,11)" rx="2" ry="2" />
  511. <text x="17.71" y="207.5" ></text>
  512. </g>
  513. <g >
  514. <title>MainThread`downloadBoard (266 samples, 0.51%)</title><rect x="10.6" y="325" width="6.0" height="15.0" fill="rgb(212,97,22)" rx="2" ry="2" />
  515. <text x="13.65" y="335.5" ></text>
  516. </g>
  517. <g >
  518. <title>MainThread`_handle_chunk (8 samples, 0.02%)</title><rect x="10.9" y="181" width="0.2" height="15.0" fill="rgb(222,164,25)" rx="2" ry="2" />
  519. <text x="13.90" y="191.5" ></text>
  520. </g>
  521. <g >
  522. <title>MainThread`recv_into (605 samples, 1.15%)</title><rect x="26.4" y="133" width="13.5" height="15.0" fill="rgb(239,111,50)" rx="2" ry="2" />
  523. <text x="29.38" y="143.5" ></text>
  524. </g>
  525. <g >
  526. <title>MainThread`urlopen (85 samples, 0.16%)</title><rect x="14.7" y="229" width="1.9" height="15.0" fill="rgb(238,127,51)" rx="2" ry="2" />
  527. <text x="17.71" y="239.5" ></text>
  528. </g>
  529. <g >
  530. <title>MainThread`getresponse (13,183 samples, 25.04%)</title><rect x="435.0" y="197" width="295.4" height="15.0" fill="rgb(236,24,14)" rx="2" ry="2" />
  531. <text x="437.96" y="207.5" >MainThread`getresponse</text>
  532. </g>
  533. <g >
  534. <title>MainThread`content (7,897 samples, 15.00%)</title><rect x="21.6" y="245" width="177.0" height="15.0" fill="rgb(217,58,42)" rx="2" ry="2" />
  535. <text x="24.59" y="255.5" >MainThread`content</text>
  536. </g>
  537. <g >
  538. <title>MainThread`readinto (605 samples, 1.15%)</title><rect x="26.4" y="149" width="13.5" height="15.0" fill="rgb(214,29,51)" rx="2" ry="2" />
  539. <text x="29.38" y="159.5" ></text>
  540. </g>
  541. <g >
  542. <title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="261" width="1.2" height="15.0" fill="rgb(239,134,48)" rx="2" ry="2" />
  543. <text x="19.61" y="271.5" ></text>
  544. </g>
  545. <g >
  546. <title>MainThread`ssl_wrap_socket (8,023 samples, 15.24%)</title><rect x="255.1" y="165" width="179.9" height="15.0" fill="rgb(212,111,4)" rx="2" ry="2" />
  547. <text x="258.14" y="175.5" >MainThread`ssl_wrap_soc..</text>
  548. </g>
  549. <g >
  550. <title>MainThread`wrap_socket (5,675 samples, 10.78%)</title><rect x="307.8" y="149" width="127.2" height="15.0" fill="rgb(240,23,7)" rx="2" ry="2" />
  551. <text x="310.76" y="159.5" >MainThread`wrap..</text>
  552. </g>
  553. <g >
  554. <title>MainThread`readinto (13,117 samples, 24.91%)</title><rect x="435.0" y="149" width="294.0" height="15.0" fill="rgb(210,192,29)" rx="2" ry="2" />
  555. <text x="437.96" y="159.5" >MainThread`readinto</text>
  556. </g>
  557. <g >
  558. <title>MainThread`do_handshake (5,640 samples, 10.71%)</title><rect x="308.5" y="117" width="126.5" height="15.0" fill="rgb(225,152,48)" rx="2" ry="2" />
  559. <text x="311.55" y="127.5" >MainThread`do_h..</text>
  560. </g>
  561. <g >
  562. <title>MainThread`_create (5,675 samples, 10.78%)</title><rect x="307.8" y="133" width="127.2" height="15.0" fill="rgb(243,138,52)" rx="2" ry="2" />
  563. <text x="310.76" y="143.5" >MainThread`_cre..</text>
  564. </g>
  565. <g >
  566. <title>MainThread`_real_close (51 samples, 0.10%)</title><rect x="16.6" y="117" width="1.2" height="15.0" fill="rgb(209,75,9)" rx="2" ry="2" />
  567. <text x="19.61" y="127.5" ></text>
  568. </g>
  569. <g >
  570. <title>MainThread`connect (42 samples, 0.08%)</title><rect x="14.7" y="181" width="0.9" height="15.0" fill="rgb(217,135,39)" rx="2" ry="2" />
  571. <text x="17.71" y="191.5" ></text>
  572. </g>
  573. <g >
  574. <title>MainThread`read_chunked (179 samples, 0.34%)</title><rect x="10.7" y="197" width="4.0" height="15.0" fill="rgb(242,94,25)" rx="2" ry="2" />
  575. <text x="13.69" y="207.5" ></text>
  576. </g>
  577. <g >
  578. <title>MainThread`decompress (213 samples, 0.40%)</title><rect x="21.6" y="165" width="4.8" height="15.0" fill="rgb(253,206,12)" rx="2" ry="2" />
  579. <text x="24.59" y="175.5" ></text>
  580. </g>
  581. <g >
  582. <title>MainThread`_call_with_frames_removed (6 samples, 0.01%)</title><rect x="10.1" y="133" width="0.1" height="15.0" fill="rgb(229,219,27)" rx="2" ry="2" />
  583. <text x="13.11" y="143.5" ></text>
  584. </g>
  585. <g >
  586. <title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="165" width="1.2" height="15.0" fill="rgb(210,213,50)" rx="2" ry="2" />
  587. <text x="19.61" y="175.5" ></text>
  588. </g>
  589. <g >
  590. <title>MainThread`request (265 samples, 0.50%)</title><rect x="10.7" y="277" width="5.9" height="15.0" fill="rgb(244,50,47)" rx="2" ry="2" />
  591. <text x="13.67" y="287.5" ></text>
  592. </g>
  593. <g >
  594. <title>MainThread`downLoadBoard (52,634 samples, 99.98%)</title><rect x="10.3" y="341" width="1179.7" height="15.0" fill="rgb(254,30,36)" rx="2" ry="2" />
  595. <text x="13.27" y="351.5" >MainThread`downLoadBoard</text>
  596. </g>
  597. <g >
  598. <title>MainThread`read_token (9 samples, 0.02%)</title><rect x="21.2" y="181" width="0.2" height="15.0" fill="rgb(207,125,51)" rx="2" ry="2" />
  599. <text x="24.16" y="191.5" ></text>
  600. </g>
  601. <g >
  602. <title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="149" width="1.2" height="15.0" fill="rgb(205,194,17)" rx="2" ry="2" />
  603. <text x="19.61" y="159.5" ></text>
  604. </g>
  605. <g >
  606. <title>MainThread`_make_request (23,787 samples, 45.18%)</title><rect x="198.7" y="213" width="533.2" height="15.0" fill="rgb(246,8,2)" rx="2" ry="2" />
  607. <text x="201.74" y="223.5" >MainThread`_make_request</text>
  608. </g>
  609. <g >
  610. <title>MainThread`exec_module (12 samples, 0.02%)</title><rect x="10.0" y="293" width="0.3" height="15.0" fill="rgb(230,145,24)" rx="2" ry="2" />
  611. <text x="13.00" y="303.5" ></text>
  612. </g>
  613. <g >
  614. <title>MainThread`getaddrinfo (36 samples, 0.07%)</title><rect x="253.5" y="133" width="0.8" height="15.0" fill="rgb(225,111,47)" rx="2" ry="2" />
  615. <text x="256.50" y="143.5" ></text>
  616. </g>
  617. <g >
  618. <title>MainThread`recv_into (162 samples, 0.31%)</title><rect x="11.1" y="149" width="3.6" height="15.0" fill="rgb(242,37,50)" rx="2" ry="2" />
  619. <text x="14.08" y="159.5" ></text>
  620. </g>
  621. <g >
  622. <title>MainThread`readinto (7,078 samples, 13.44%)</title><rect x="39.9" y="165" width="158.7" height="15.0" fill="rgb(218,146,4)" rx="2" ry="2" />
  623. <text x="42.94" y="175.5" >MainThread`readinto</text>
  624. </g>
  625. <g >
  626. <title>MainThread`recv_into (8 samples, 0.02%)</title><rect x="10.9" y="133" width="0.2" height="15.0" fill="rgb(250,175,43)" rx="2" ry="2" />
  627. <text x="13.90" y="143.5" ></text>
  628. </g>
  629. <g >
  630. <title>MainThread`readinto (8 samples, 0.02%)</title><rect x="10.9" y="149" width="0.2" height="15.0" fill="rgb(252,26,33)" rx="2" ry="2" />
  631. <text x="13.90" y="159.5" ></text>
  632. </g>
  633. <g >
  634. <title>MainThread`connect (10,538 samples, 20.02%)</title><rect x="198.8" y="181" width="236.2" height="15.0" fill="rgb(218,69,40)" rx="2" ry="2" />
  635. <text x="201.77" y="191.5" >MainThread`connect</text>
  636. </g>
  637. <g >
  638. <title>MainThread`_call_with_frames_removed (10 samples, 0.02%)</title><rect x="10.0" y="181" width="0.2" height="15.0" fill="rgb(251,98,20)" rx="2" ry="2" />
  639. <text x="13.02" y="191.5" ></text>
  640. </g>
  641. <g >
  642. <title>MainThread`generate (179 samples, 0.34%)</title><rect x="10.7" y="229" width="4.0" height="15.0" fill="rgb(218,180,47)" rx="2" ry="2" />
  643. <text x="13.69" y="239.5" ></text>
  644. </g>
  645. <g >
  646. <title>MainThread`get_token (9 samples, 0.02%)</title><rect x="21.2" y="197" width="0.2" height="15.0" fill="rgb(207,78,19)" rx="2" ry="2" />
  647. <text x="24.16" y="207.5" ></text>
  648. </g>
  649. <g >
  650. <title>MainThread`main (52,647 samples, 100.00%)</title><rect x="10.0" y="373" width="1180.0" height="15.0" fill="rgb(250,185,27)" rx="2" ry="2" />
  651. <text x="13.00" y="383.5" >MainThread`main</text>
  652. </g>
  653. <g >
  654. <title>MainThread`exec_module (10 samples, 0.02%)</title><rect x="10.0" y="197" width="0.2" height="15.0" fill="rgb(228,51,53)" rx="2" ry="2" />
  655. <text x="13.02" y="207.5" ></text>
  656. </g>
  657. <g >
  658. <title>MainThread`decompress (9 samples, 0.02%)</title><rect x="10.7" y="165" width="0.2" height="15.0" fill="rgb(206,75,51)" rx="2" ry="2" />
  659. <text x="13.69" y="175.5" ></text>
  660. </g>
  661. <g >
  662. <title>MainThread`_validate_conn (10,538 samples, 20.02%)</title><rect x="198.8" y="197" width="236.2" height="15.0" fill="rgb(225,43,5)" rx="2" ry="2" />
  663. <text x="201.77" y="207.5" >MainThread`_validate_conn</text>
  664. </g>
  665. <g >
  666. <title>MainThread`&lt;module&gt; (52,646 samples, 100.00%)</title><rect x="10.0" y="357" width="1180.0" height="15.0" fill="rgb(231,126,16)" rx="2" ry="2" />
  667. <text x="13.00" y="367.5" >MainThread`&lt;module&gt;</text>
  668. </g>
  669. <g >
  670. <title>MainThread`_send_output (65 samples, 0.12%)</title><rect x="730.4" y="149" width="1.5" height="15.0" fill="rgb(208,155,7)" rx="2" ry="2" />
  671. <text x="733.43" y="159.5" ></text>
  672. </g>
  673. <g >
  674. <title>MainThread`__exit__ (51 samples, 0.10%)</title><rect x="16.6" y="277" width="1.2" height="15.0" fill="rgb(213,77,43)" rx="2" ry="2" />
  675. <text x="19.61" y="287.5" ></text>
  676. </g>
  677. <g >
  678. <title>MainThread`recv_into (13,117 samples, 24.91%)</title><rect x="435.0" y="133" width="294.0" height="15.0" fill="rgb(205,197,8)" rx="2" ry="2" />
  679. <text x="437.96" y="143.5" >MainThread`recv_into</text>
  680. </g>
  681. <g >
  682. <title>MainThread`_read_status (43 samples, 0.08%)</title><rect x="15.6" y="165" width="1.0" height="15.0" fill="rgb(205,32,23)" rx="2" ry="2" />
  683. <text x="18.65" y="175.5" ></text>
  684. </g>
  685. <g >
  686. <title>MainThread`_find_and_load_unlocked (6 samples, 0.01%)</title><rect x="10.1" y="101" width="0.1" height="15.0" fill="rgb(230,73,39)" rx="2" ry="2" />
  687. <text x="13.11" y="111.5" ></text>
  688. </g>
  689. <g >
  690. <title>MainThread`prepare_request (171 samples, 0.32%)</title><rect x="17.8" y="261" width="3.8" height="15.0" fill="rgb(244,206,1)" rx="2" ry="2" />
  691. <text x="20.76" y="271.5" ></text>
  692. </g>
  693. <g >
  694. <title>MainThread`_load_unlocked (12 samples, 0.02%)</title><rect x="10.0" y="309" width="0.3" height="15.0" fill="rgb(221,62,26)" rx="2" ry="2" />
  695. <text x="13.00" y="319.5" ></text>
  696. </g>
  697. <g >
  698. <title>MainThread`_update_chunk_length (162 samples, 0.31%)</title><rect x="11.1" y="181" width="3.6" height="15.0" fill="rgb(216,90,54)" rx="2" ry="2" />
  699. <text x="14.08" y="191.5" ></text>
  700. </g>
  701. <g >
  702. <title>MainThread`_new_conn (12 samples, 0.02%)</title><rect x="14.7" y="165" width="0.3" height="15.0" fill="rgb(241,84,26)" rx="2" ry="2" />
  703. <text x="17.71" y="175.5" ></text>
  704. </g>
  705. <g >
  706. <title>MainThread`read (8 samples, 0.02%)</title><rect x="10.9" y="117" width="0.2" height="15.0" fill="rgb(253,119,30)" rx="2" ry="2" />
  707. <text x="13.90" y="127.5" ></text>
  708. </g>
  709. <g >
  710. <title>MainThread`cert_verify (7 samples, 0.01%)</title><rect x="198.6" y="229" width="0.1" height="15.0" fill="rgb(207,158,41)" rx="2" ry="2" />
  711. <text x="201.59" y="239.5" ></text>
  712. </g>
  713. <g >
  714. <title>MainThread`_call_with_frames_removed (6 samples, 0.01%)</title><rect x="10.1" y="53" width="0.1" height="15.0" fill="rgb(252,129,44)" rx="2" ry="2" />
  715. <text x="13.11" y="63.5" ></text>
  716. </g>
  717. <g >
  718. <title>MainThread`begin (13,183 samples, 25.04%)</title><rect x="435.0" y="181" width="295.4" height="15.0" fill="rgb(235,62,9)" rx="2" ry="2" />
  719. <text x="437.96" y="191.5" >MainThread`begin</text>
  720. </g>
  721. <g >
  722. <title>MainThread`endheaders (65 samples, 0.12%)</title><rect x="730.4" y="165" width="1.5" height="15.0" fill="rgb(210,16,19)" rx="2" ry="2" />
  723. <text x="733.43" y="175.5" ></text>
  724. </g>
  725. <g >
  726. <title>MainThread`addPost (9 samples, 0.02%)</title><rect x="10.4" y="325" width="0.2" height="15.0" fill="rgb(246,121,34)" rx="2" ry="2" />
  727. <text x="13.45" y="335.5" ></text>
  728. </g>
  729. <g >
  730. <title>MainThread`read (605 samples, 1.15%)</title><rect x="26.4" y="117" width="13.5" height="15.0" fill="rgb(234,95,27)" rx="2" ry="2" />
  731. <text x="29.38" y="127.5" ></text>
  732. </g>
  733. <g >
  734. <title>MainThread`get (266 samples, 0.51%)</title><rect x="10.6" y="309" width="6.0" height="15.0" fill="rgb(236,103,37)" rx="2" ry="2" />
  735. <text x="13.65" y="319.5" ></text>
  736. </g>
  737. <g >
  738. <title>MainThread`_load_unlocked (10 samples, 0.02%)</title><rect x="10.0" y="213" width="0.2" height="15.0" fill="rgb(241,114,1)" rx="2" ry="2" />
  739. <text x="13.02" y="223.5" ></text>
  740. </g>
  741. <g >
  742. <title>MainThread`_load_unlocked (6 samples, 0.01%)</title><rect x="10.1" y="85" width="0.1" height="15.0" fill="rgb(215,141,27)" rx="2" ry="2" />
  743. <text x="13.11" y="95.5" ></text>
  744. </g>
  745. <g >
  746. <title>MainThread`create_connection (2,478 samples, 4.71%)</title><rect x="198.8" y="149" width="55.5" height="15.0" fill="rgb(205,225,2)" rx="2" ry="2" />
  747. <text x="201.77" y="159.5" >MainT..</text>
  748. </g>
  749. <g >
  750. <title>MainThread`get_netrc_auth (171 samples, 0.32%)</title><rect x="17.8" y="245" width="3.8" height="15.0" fill="rgb(214,190,0)" rx="2" ry="2" />
  751. <text x="20.76" y="255.5" ></text>
  752. </g>
  753. <g >
  754. <title>MainThread`_decode (9 samples, 0.02%)</title><rect x="10.7" y="181" width="0.2" height="15.0" fill="rgb(220,78,3)" rx="2" ry="2" />
  755. <text x="13.69" y="191.5" ></text>
  756. </g>
  757. <g >
  758. <title>MainThread`raw_decode (25 samples, 0.05%)</title><rect x="731.9" y="277" width="0.6" height="15.0" fill="rgb(231,9,23)" rx="2" ry="2" />
  759. <text x="734.89" y="287.5" ></text>
  760. </g>
  761. <g >
  762. <title>MainThread`&lt;module&gt; (11 samples, 0.02%)</title><rect x="10.0" y="261" width="0.2" height="15.0" fill="rgb(212,222,22)" rx="2" ry="2" />
  763. <text x="13.00" y="271.5" ></text>
  764. </g>
  765. <g >
  766. <title>MainThread`read (66 samples, 0.13%)</title><rect x="729.0" y="117" width="1.4" height="15.0" fill="rgb(253,201,15)" rx="2" ry="2" />
  767. <text x="731.96" y="127.5" ></text>
  768. </g>
  769. <g >
  770. <title>MainThread`_find_and_load_unlocked (12 samples, 0.02%)</title><rect x="10.0" y="325" width="0.3" height="15.0" fill="rgb(232,105,42)" rx="2" ry="2" />
  771. <text x="13.00" y="335.5" ></text>
  772. </g>
  773. <g >
  774. <title>MainThread`clear (51 samples, 0.10%)</title><rect x="16.6" y="213" width="1.2" height="15.0" fill="rgb(212,61,11)" rx="2" ry="2" />
  775. <text x="19.61" y="223.5" ></text>
  776. </g>
  777. <g >
  778. <title>MainThread`content (179 samples, 0.34%)</title><rect x="10.7" y="245" width="4.0" height="15.0" fill="rgb(252,107,32)" rx="2" ry="2" />
  779. <text x="13.69" y="255.5" ></text>
  780. </g>
  781. <g >
  782. <title>MainThread`exec_module (6 samples, 0.01%)</title><rect x="10.1" y="69" width="0.1" height="15.0" fill="rgb(223,162,12)" rx="2" ry="2" />
  783. <text x="13.11" y="79.5" ></text>
  784. </g>
  785. <g >
  786. <title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="181" width="1.2" height="15.0" fill="rgb(223,197,7)" rx="2" ry="2" />
  787. <text x="19.61" y="191.5" ></text>
  788. </g>
  789. <g >
  790. <title>MainThread`downloadThread (31,938 samples, 60.66%)</title><rect x="16.6" y="325" width="715.9" height="15.0" fill="rgb(254,152,1)" rx="2" ry="2" />
  791. <text x="19.61" y="335.5" >MainThread`downloadThread</text>
  792. </g>
  793. <g >
  794. <title>MainThread`urlopen (23,787 samples, 45.18%)</title><rect x="198.7" y="229" width="533.2" height="15.0" fill="rgb(206,134,37)" rx="2" ry="2" />
  795. <text x="201.74" y="239.5" >MainThread`urlopen</text>
  796. </g>
  797. <g >
  798. <title>MainThread`__init__ (161 samples, 0.31%)</title><rect x="17.8" y="229" width="3.6" height="15.0" fill="rgb(220,219,48)" rx="2" ry="2" />
  799. <text x="20.76" y="239.5" ></text>
  800. </g>
  801. <g >
  802. <title>MainThread`wrap_socket (27 samples, 0.05%)</title><rect x="15.0" y="149" width="0.6" height="15.0" fill="rgb(235,125,54)" rx="2" ry="2" />
  803. <text x="18.04" y="159.5" ></text>
  804. </g>
  805. <g >
  806. <title>MainThread`_find_and_load (12 samples, 0.02%)</title><rect x="10.0" y="341" width="0.3" height="15.0" fill="rgb(238,15,7)" rx="2" ry="2" />
  807. <text x="13.00" y="351.5" ></text>
  808. </g>
  809. <g >
  810. <title>MainThread`ssl_wrap_socket (29 samples, 0.06%)</title><rect x="15.0" y="165" width="0.6" height="15.0" fill="rgb(205,103,4)" rx="2" ry="2" />
  811. <text x="18.00" y="175.5" ></text>
  812. </g>
  813. <g >
  814. <title>MainThread`sendall (65 samples, 0.12%)</title><rect x="730.4" y="117" width="1.5" height="15.0" fill="rgb(215,190,3)" rx="2" ry="2" />
  815. <text x="733.43" y="127.5" ></text>
  816. </g>
  817. <g >
  818. <title>MainThread`_run_code (52,647 samples, 100.00%)</title><rect x="10.0" y="405" width="1180.0" height="15.0" fill="rgb(237,30,45)" rx="2" ry="2" />
  819. <text x="13.00" y="415.5" >MainThread`_run_code</text>
  820. </g>
  821. <g >
  822. <title>MainThread`read (162 samples, 0.31%)</title><rect x="11.1" y="133" width="3.6" height="15.0" fill="rgb(212,119,30)" rx="2" ry="2" />
  823. <text x="14.08" y="143.5" ></text>
  824. </g>
  825. <g >
  826. <title>MainThread`recv_into (43 samples, 0.08%)</title><rect x="15.6" y="133" width="1.0" height="15.0" fill="rgb(249,117,51)" rx="2" ry="2" />
  827. <text x="18.65" y="143.5" ></text>
  828. </g>
  829. <g >
  830. <title>MainThread`getresponse (43 samples, 0.08%)</title><rect x="15.6" y="197" width="1.0" height="15.0" fill="rgb(210,60,36)" rx="2" ry="2" />
  831. <text x="18.65" y="207.5" ></text>
  832. </g>
  833. <g >
  834. <title>MainThread`_find_and_load_unlocked (11 samples, 0.02%)</title><rect x="10.0" y="229" width="0.2" height="15.0" fill="rgb(223,26,1)" rx="2" ry="2" />
  835. <text x="13.00" y="239.5" ></text>
  836. </g>
  837. <g >
  838. <title>MainThread`_call_with_frames_removed (11 samples, 0.02%)</title><rect x="10.0" y="277" width="0.2" height="15.0" fill="rgb(246,220,14)" rx="2" ry="2" />
  839. <text x="13.00" y="287.5" ></text>
  840. </g>
  841. <g >
  842. <title>MainThread`request (31,913 samples, 60.62%)</title><rect x="16.6" y="293" width="715.3" height="15.0" fill="rgb(220,147,8)" rx="2" ry="2" />
  843. <text x="19.61" y="303.5" >MainThread`request</text>
  844. </g>
  845. <g >
  846. <title>MainThread`create_urllib3_context (37 samples, 0.07%)</title><rect x="254.3" y="165" width="0.8" height="15.0" fill="rgb(231,180,37)" rx="2" ry="2" />
  847. <text x="257.31" y="175.5" ></text>
  848. </g>
  849. <g >
  850. <title>MainThread`stream (179 samples, 0.34%)</title><rect x="10.7" y="213" width="4.0" height="15.0" fill="rgb(205,8,23)" rx="2" ry="2" />
  851. <text x="13.69" y="223.5" ></text>
  852. </g>
  853. <g >
  854. <title>MainThread`_decode (213 samples, 0.40%)</title><rect x="21.6" y="181" width="4.8" height="15.0" fill="rgb(236,28,13)" rx="2" ry="2" />
  855. <text x="24.59" y="191.5" ></text>
  856. </g>
  857. <g >
  858. <title>MainThread`__new__ (37 samples, 0.07%)</title><rect x="254.3" y="149" width="0.8" height="15.0" fill="rgb(219,90,10)" rx="2" ry="2" />
  859. <text x="257.31" y="159.5" ></text>
  860. </g>
  861. <g >
  862. <title>MainThread`_find_and_load (11 samples, 0.02%)</title><rect x="10.0" y="245" width="0.2" height="15.0" fill="rgb(222,127,7)" rx="2" ry="2" />
  863. <text x="13.00" y="255.5" ></text>
  864. </g>
  865. <g >
  866. <title>MainThread`_find_and_load (6 samples, 0.01%)</title><rect x="10.1" y="117" width="0.1" height="15.0" fill="rgb(206,199,33)" rx="2" ry="2" />
  867. <text x="13.11" y="127.5" ></text>
  868. </g>
  869. <g >
  870. <title>MainThread`do_handshake (27 samples, 0.05%)</title><rect x="15.0" y="117" width="0.6" height="15.0" fill="rgb(207,138,31)" rx="2" ry="2" />
  871. <text x="18.04" y="127.5" ></text>
  872. </g>
  873. <g >
  874. <title>MainThread`stream (7,897 samples, 15.00%)</title><rect x="21.6" y="213" width="177.0" height="15.0" fill="rgb(208,55,53)" rx="2" ry="2" />
  875. <text x="24.59" y="223.5" >MainThread`stream</text>
  876. </g>
  877. <g >
  878. <title>MainThread`send (85 samples, 0.16%)</title><rect x="14.7" y="245" width="1.9" height="15.0" fill="rgb(247,179,46)" rx="2" ry="2" />
  879. <text x="17.71" y="255.5" ></text>
  880. </g>
  881. </g>
  882. </svg>