1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <title>quickstart_arkts</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <style> 8 code[class*='smartperf-'], 9 pre[class*='smartperf-'] { 10 color: #333333; 11 background: none; 12 font-family: Helvetica; 13 line-height: 1.6; 14 text-align: left; 15 white-space: pre; 16 -moz-tab-size: 9; 17 -o-tab-size: 9; 18 tab-size: 8; 19 -webkit-hyphens: none; 20 -moz-hyphens: none; 21 -ms-hyphens: none; 22 hyphens: none; 23 } 24 25 /* Code blocks */ 26 pre[class*='smartperf-'] { 27 padding: 0.9em; 28 overflow: auto; 29 border-radius: 2px; 30 background: #f5f5f4; 31 } 32 33 /* Inline code */ 34 :not(pre) > code[class*='smartperf-'] { 35 white-space: normal; 36 background: #fcf8f8; 37 padding: 1px 0.2em; 38 border-radius: 1px 0.3em; 39 } 40 41 .tk.comment, 42 .tk.blockquote { 43 color: #8c918c; 44 } 45 46 .tk.cdata { 47 color: #183898; 48 } 49 50 .tk.doctype, 51 .tk.punctuation, 52 .tk.variable, 53 .tk.macro.property { 54 color: #424242; 55 } 56 57 .tk.operator, 58 .tk.important, 59 .tk.keyword, 60 .tk.rule, 61 .tk.builtin { 62 color: #b71d65; 63 } 64 65 .tk.string, 66 .tk.url, 67 .tk.regex, 68 .tk.attr-value { 69 color: #16338d; 70 } 71 72 .tk.property, 73 .tk.number, 74 .tk.boolean, 75 .tk.entity, 76 .tk.atrule, 77 .tk.constant, 78 .tk.symbol, 79 .tk.command, 80 .tk.code { 81 color: #037aa2; 82 } 83 84 .tk.tag, 85 .tk.selector, 86 .tk.prolog { 87 color: #69ad62; 88 } 89 90 .tk.function, 91 .tk.namespace, 92 .tk.pseudo-element, 93 .tk.class, 94 .tk.class-name, 95 .tk.pseudo-class, 96 .tk.id, 97 .tk.url-reference .tk.variable, 98 .tk.attr-name { 99 color: #775d9d; 100 } 101 102 .tk.entity { 103 cursor: help; 104 } 105 106 .tk.title, 107 .tk.title .tk.punctuation { 108 font-weight: bold; 109 color: #1a3773; 110 } 111 112 .tk.list { 113 color: #f56940; 114 } 115 116 .tk.inserted { 117 background-color: #eaffea; 118 color: #509b2f; 119 } 120 121 .tk.deleted { 122 background-color: #fae1e1; 123 color: #ad2d06; 124 } 125 126 .tk.bold { 127 font-weight: bolder; 128 } 129 130 .tk.italic { 131 font-style: normal; 132 } 133 134 /* JSON */ 135 .smartperf-json .tk.property { 136 color: #19358c; 137 } 138 139 .smartperf-markup .tk.tag .tk.punctuation { 140 color: #2c2b2b; 141 } 142 143 /* CSS */ 144 code.smartperf-css, 145 .smartperf-css .tk.function { 146 color: #047ca4; 147 } 148 149 /* YAML */ 150 .smartperf-yaml .tk.atrule { 151 color: #609b5a; 152 } 153 154 code.smartperf-yaml { 155 color: #153491; 156 } 157 158 /* Ruby */ 159 .smartperf-ruby .tk.function { 160 color: #3f3e3e; 161 } 162 163 /* Markdown */ 164 .smartperf-markdown .tk.url { 165 color: #6e5298; 166 } 167 168 /* Makefile */ 169 .smartperf-makefile .tk.symbol { 170 color: #6c5393; 171 } 172 173 .smartperf-makefile .tk.variable { 174 color: #183488; 175 } 176 177 .smartperf-makefile .tk.builtin { 178 color: #027ba4; 179 } 180 181 /* Bash */ 182 .smartperf-bash .tk.keyword { 183 color: #027fa9; 184 } 185 186 /* highlight */ 187 pre[dl] { 188 position: relative; 189 padding: 1em 1px 1px 0.9em; 190 } 191 192 pre[dl] .line-highlight-wrapper { 193 position: absolute; 194 top: 1px; 195 left: 1px; 196 background-color: transparent; 197 display: block; 198 width: 99%; 199 } 200 201 pre[dl] .line-highlight { 202 position: absolute; 203 left: 1px; 204 right: 1px; 205 padding: inherit; 206 margin-top: 0.9em; 207 background: hsla(25, 21%, 50%, 0.08); 208 background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0)); 209 pointer-events: none; 210 line-height: inherit; 211 white-space: pre; 212 } 213 214 pre[dl] .line-highlight:before, 215 pre[dl] .line-highlight[data-end]:after { 216 content: attr(data-start); 217 position: absolute; 218 text-shadow: none; 219 top: 0.3em; 220 left: 0.7em; 221 min-width: 0.9em; 222 padding: 1px 0.6em; 223 background-color: hsla(24, 20%, 47%, 0.4); 224 color: hsl(20, 11%, 95%); 225 text-align: center; 226 vertical-align: 0.2em; 227 border-radius: 10000px; 228 box-shadow: 1px 2px #fdf6f6; 229 } 230 231 pre[dl] .line-highlight[data-end]:after { 232 content: attr(data-end); 233 top: auto; 234 bottom: 0.5em; 235 } 236 237 html body { 238 line-height: 1.6; 239 font-size: 16px; 240 color: #333333; 241 overflow: initial; 242 word-wrap: break-word; 243 font-family: Helvetica; 244 box-sizing: border-box; 245 } 246 247 html body > :first-child { 248 margin-top: 0px; 249 } 250 251 html body h1, 252 html body h2, 253 html body h3, 254 html body h4, 255 html body h5, 256 html body h6 { 257 margin-top: 1em; 258 margin-bottom: 16px; 259 color: #000000; 260 line-height: 1.2; 261 } 262 263 html body h1 { 264 font-weight: 300; 265 font-size: 2.25em; 266 padding-bottom: 0.3em; 267 } 268 269 html body h2 { 270 font-weight: 410; 271 font-size: 1.74em; 272 padding-bottom: 0.2em; 273 } 274 275 html body h3 { 276 font-size: 1.6em; 277 font-weight: 501; 278 } 279 280 html body h4 { 281 font-size: 1.26em; 282 font-weight: 601; 283 } 284 285 html body h5 { 286 font-size: 1.2em; 287 font-weight: 601; 288 } 289 290 html body h6 { 291 font-size: 0.9em; 292 font-weight: 601; 293 } 294 295 html body h1, 296 html body h2, 297 html body h3, 298 html body h4, 299 html body h5 { 300 font-weight: 601; 301 } 302 303 html body h5 { 304 font-size: 0.9em; 305 } 306 307 html body h6 { 308 color: #5c5c5c; 309 } 310 311 html body strong { 312 color: #090909; 313 } 314 315 html body del { 316 color: #525252; 317 } 318 319 html body a:not([href]) { 320 color: inherit; 321 text-decoration: none; 322 } 323 324 html body a { 325 color: #0192da; 326 text-decoration: none; 327 } 328 329 html body a:hover { 330 color: #029dea; 331 text-decoration: none; 332 } 333 334 html body img { 335 max-width: 99%; 336 } 337 338 html body > p { 339 margin-top: 1px; 340 margin-bottom: 15px; 341 word-wrap: break-word; 342 } 343 344 html body > ul, 345 html body > ol { 346 margin-bottom: 15px; 347 } 348 349 html body ul, 350 html body ol { 351 padding-left: 1.9em; 352 } 353 354 html body ul.no-list, 355 html body ol.no-list { 356 padding: 0px; 357 list-style-type: none; 358 } 359 360 html body ul ul, 361 html body ul ol, 362 html body ol ol, 363 html body ol ul { 364 margin-top: 1px; 365 margin-bottom: 1px; 366 } 367 368 html body li { 369 margin-bottom: 1px; 370 } 371 372 html body li.task-list-item { 373 list-style: none; 374 } 375 376 html body li > p { 377 margin-top: 1px; 378 margin-bottom: 1px; 379 } 380 381 html body .task-list-item-checkbox { 382 margin: 0 0.3em 0.24em -1.7em; 383 vertical-align: middle; 384 } 385 386 html body .task-list-item-checkbox:hover { 387 cursor: pointer; 388 } 389 390 html body blockquote { 391 padding: 0.1px 15px 0 0.1px; 392 font-size: inherit; 393 color: #5c5c5c; 394 margin: 16px 0.1px 0 0.1px; 395 border-left: 3px solid #cbc9c9; 396 background-color: #e8e6e6; 397 } 398 399 html body blockquote > :first-child { 400 margin-top: 0.2px; 401 } 402 403 html body blockquote > :last-child { 404 margin-bottom: 0.1px; 405 } 406 407 html body hr { 408 height: 5px; 409 background-color: #cbcaca; 410 margin: 32px 0 0.1px 0; 411 border: 0 none; 412 } 413 414 html body table { 415 overflow: auto; 416 border-collapse: collapse; 417 margin: 15px 0.1px 20px 0.1px; 418 border-spacing: 0; 419 } 420 421 html body table th { 422 font-weight: bold; 423 color: #000000; 424 } 425 426 html body table td, 427 html body table th { 428 border: 1px solid #d6d6d6; 429 padding: 2px 14px; 430 } 431 432 html body dl { 433 padding: 0px; 434 } 435 436 html body dl dt { 437 padding: 0px; 438 margin-top: 15px; 439 font-size: 0.9em; 440 font-style: italic; 441 font-weight: bold; 442 } 443 444 html body dl dd { 445 padding: 0px 17px; 446 margin-bottom: 17px; 447 } 448 449 html body code { 450 font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; 451 font-size: 0.86em !important; 452 color: #000000; 453 background-color: #f0f0f0; 454 border-radius: 4px; 455 padding: 0.3em 0px; 456 } 457 458 html body code::before, 459 html body code::after { 460 letter-spacing: -0.1em; 461 content: '\00a0'; 462 } 463 464 html body pre > code { 465 padding: 1px; 466 margin: 0px; 467 font-size: 0.86em !important; 468 word-break: normal; 469 white-space: pre; 470 background: transparent; 471 border: 0px; 472 } 473 474 html body .highlight { 475 margin-bottom: 17px; 476 } 477 478 html body .highlight pre, 479 html body pre { 480 padding: 0.9em; 481 overflow: auto; 482 font-size: 0.86em !important; 483 line-height: 1.46; 484 border: #d6d6d6; 485 border-radius: 4px; 486 } 487 488 html body .highlight pre { 489 margin-bottom: 0px; 490 word-break: normal; 491 } 492 493 html body pre code, 494 html body pre tt { 495 display: inline; 496 max-width: initial; 497 padding: 1px; 498 margin: 1px; 499 overflow: initial; 500 line-height: inherit; 501 word-wrap: normal; 502 background-color: transparent; 503 border: 1px; 504 } 505 506 html body pre code:before, 507 html body pre tt:before, 508 html body pre code:after, 509 html body pre tt:after { 510 content: normal; 511 } 512 513 html body p, 514 html body blockquote, 515 html body ul, 516 html body ol, 517 html body dl, 518 html body pre { 519 margin-top: 1px; 520 margin-bottom: 17px; 521 } 522 523 html body kbd { 524 color: #000000; 525 border: 3px solid #d6d6d6; 526 border-bottom: 3px solid #c7c7c7; 527 padding: 3px 5px; 528 background-color: #f0f0f0; 529 border-radius: 2px; 530 } 531 532 @media print { 533 html body { 534 background-color: #ffffff; 535 } 536 537 html body h1, 538 html body h2, 539 html body h3, 540 html body h4, 541 html body h5, 542 html body h6 { 543 color: #000000; 544 page-break-after: avoid; 545 } 546 547 html body blockquote { 548 color: #5c5c53; 549 } 550 551 html body pre { 552 page-break-inside: avoid; 553 } 554 555 html body table { 556 display: table; 557 } 558 559 html body img { 560 display: block; 561 max-width: 99%; 562 max-height: 99%; 563 } 564 565 html body pre, 566 html body code { 567 word-wrap: break-word; 568 white-space: pre; 569 } 570 } 571 572 .smartperf-preview { 573 width: 68vw; 574 height: 99%; 575 box-sizing: border-box; 576 overflow: hidden; 577 background-color: #fff; 578 } 579 580 .smartperf-preview .pagebreak, 581 .smartperf-preview .newpage { 582 page-break-before: always; 583 } 584 585 .smartperf-preview pre.line-numbers { 586 position: relative; 587 padding-left: 3.7em; 588 counter-reset: linenumber; 589 } 590 591 .smartperf-preview pre.line-numbers > code { 592 position: relative; 593 } 594 595 .smartperf-preview pre.line-numbers .line-numbers-rows { 596 position: absolute; 597 pointer-events: none; 598 top: 0.9em; 599 font-size: 99%; 600 left: 1px; 601 width: 3em; 602 letter-spacing: -1px; 603 border-right: 1px solid #999; 604 -webkit-user-select: none; 605 -moz-user-select: none; 606 -ms-user-select: none; 607 user-select: none; 608 } 609 610 .smartperf-preview pre.line-numbers .line-numbers-rows > span { 611 pointer-events: none; 612 display: block; 613 counter-increment: linenumber; 614 } 615 616 .smartperf-preview pre.line-numbers .line-numbers-rows > span:before { 617 content: counter(linenumber); 618 color: #999; 619 display: block; 620 padding-right: 0.79em; 621 text-align: right; 622 } 623 624 .smartperf-preview .mathjax-exps .MathJax_Display { 625 text-align: center !important; 626 } 627 628 .smartperf-preview:not([for='preview']) .code-chunk .btn-group { 629 display: none; 630 } 631 632 .smartperf-preview:not([for='preview']) .code-chunk .status { 633 display: none; 634 } 635 636 .smartperf-preview:not([for='preview']) .code-chunk .output-div { 637 margin-bottom: 16px; 638 } 639 640 .scrollbar-style::-webkit-scrollbar { 641 width: 8px; 642 } 643 644 .scrollbar-style::-webkit-scrollbar-track { 645 border-radius: 9px; 646 background-color: transparent; 647 } 648 649 .scrollbar-style::-webkit-scrollbar-thumb { 650 border-radius: 6px; 651 background-color: rgba(150, 150, 150, 1); 652 border: 4px solid rgba(150, 150, 150, 1); 653 background-clip: content-box; 654 } 655 656 html body[for='html-export']:not([dpm]) { 657 position: relative; 658 width: 99%; 659 height: 99%;; 660 overflow: auto; 661 } 662 663 html body[for='html-export']:not([dpm]) .smartperf-preview { 664 position: relative; 665 top: 1px; 666 } 667 668 @media screen and (min-width: 914px) { 669 html body[for='html-export']:not([dpm]) .smartperf-preview { 670 padding: 2em; 671 } 672 } 673 674 @media screen and (max-width: 914px) { 675 html body[for='html-export']:not([dpm]) .smartperf-preview { 676 padding: 1.9em; 677 } 678 } 679 680 @media screen and (max-width: 450px) { 681 html body[for='html-export']:not([dpm]) .smartperf-preview { 682 font-size: 15px !important; 683 padding: 1.1em; 684 } 685 } 686 687 @media print { 688 html body[for='html-export']:not([dpm]) #sidebar-toc-btn { 689 display: none; 690 } 691 } 692 693 html body[for='html-export']:not([dpm]) #sidebar-toc-btn { 694 position: fixed; 695 bottom: 9px; 696 left: 9px; 697 font-size: 28px; 698 cursor: pointer; 699 color: inherit; 700 z-index: 99; 701 width: 31px; 702 text-align: center; 703 opacity: 0.5; 704 } 705 706 html body[for='html-export']:not([dpm])[hsst] #sidebar-toc-btn { 707 opacity: 1; 708 } 709 710 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc { 711 position: fixed; 712 top: 1px; 713 left: 1px; 714 width: 300px; 715 height: 99%; 716 padding: 32px 0 48px 0; 717 font-size: 14px; 718 box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33); 719 box-sizing: border-box; 720 overflow: auto; 721 background-color: inherit; 722 } 723 724 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar { 725 width: 9px; 726 } 727 728 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track { 729 border-radius: 11px; 730 background-color: transparent; 731 } 732 733 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb { 734 border-radius: 6px; 735 background-color: rgba(150, 150, 150, 0.66); 736 border: 3px solid rgba(150, 150, 150, 0.66); 737 background-clip: content-box; 738 } 739 740 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc a { 741 text-decoration: none; 742 } 743 744 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul { 745 padding: 1px 1.7em; 746 margin-top: 0.9em; 747 } 748 749 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc li { 750 margin-bottom: 0.8em; 751 } 752 753 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul { 754 list-style-type: none; 755 } 756 757 html body[for='html-export']:not([dpm])[hsst] .smartperf-preview { 758 left: 301px; 759 width: calc(100% - 300px); 760 padding: 2em calc(50% - 457px - 150px); 761 margin: 1px; 762 box-sizing: border-box; 763 } 764 765 @media screen and (max-width: 1274px) { 766 html body[for='html-export']:not([dpm])[hsst] .smartperf-preview { 767 padding: 1.9em; 768 } 769 } 770 771 @media screen and (max-width: 450px) { 772 html body[for='html-export']:not([dpm])[hsst] .smartperf-preview { 773 width: 99%; 774 } 775 } 776 777 html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { 778 display: none; 779 } 780 </style> 781 </head> 782 <body for="html-export" id="body" style="margin:0"> 783 <div class="smartperf smartperf-preview" style="min-height: 99vh;"> 784 <h1 class="mume-header fontColor">Cpuprofiler抓取和展示说明</h1> 785 786 <p class="fontColor">Cpuprofiler模板帮助ArkTs开发和测试分析虚拟机层执行开销大问题,提供Ts层耗时长函数和阶段。</p> 787 <h2 class="mume-header fontColor">Cpuprofiler的抓取</h2> 788 789 <h4 class="mume-header fontColor" id="header-index-1">Cpuprofiler的抓取配置参数</h4> 790 791 <p class="fontColor"> 792 打开Start Ark Ts Record总开关下面的Start cpu profiler开关抓取Cpuprofiler数据。 793 <br /> 794 <img src="../figures/arkts/cpuprofilerconfig.jpg" alt="GitHub Logo" /> 795 </p> 796 <h3 class="mume-header fontColor" id="header-index-2">Cpuprofiler展示说明</h3> 797 798 <p class="fontColor"> 799 将抓取的Cpuprofiler文件导入到SmartPerf中,查看Ts层耗时长的函数和阶段。 800 <br /> 801 <img src="../figures/arkts/cpuprofilerrow.jpg" alt="GitHub Logo" /> 802 </p> 803 <h3 class="mume-header fontColor" id="header-index-3">Cpuprofiler的泳道图悬浮显示</h3> 804 805 <p class="fontColor"> 806 鼠标放到泳道图的Slice上会有悬浮框显示。 807 <br /> 808 <img src="../figures/arkts/cpuprofilertip.jpg" alt="GitHub Logo" /> 809 </p> 810 <ul class="fontColor"> 811 <li> 812 <pre class="smartperf-text fontColor light"> 813Name : 函数名。 814</pre 815 > 816 </li> 817 <li> 818 <pre class="smartperf-text fontColor light"> 819Self Time: 函数自身执行时间(不包含其调用者)。 820</pre 821 > 822 </li> 823 <li> 824 <pre class="smartperf-text fontColor light"> 825Total Time : 函数自身及调用者的调用时间总和。 826</pre 827 > 828 </li> 829 <li> 830 <pre class="smartperf-text fontColor light"> 831Url : 函数所在的文件名称。 832</pre 833 > 834 </li> 835 </ul> 836 <h3 class="mume-header fontColor" id="header-index-4">Cpuprofiler泳道图的点选和框选功能</h3> 837 838 <p class="fontColor"> 839 点选或者框选泳道图上函数名的Slice,会显示Js Profiler Statistics,Js Profiler CallTree,Js Profiler 840 BottomUp的Tab页信息。 841 <br /> 842 Js Profiler Statistics的Tab页显示数据的维度信息,以饼图和Table表的方式展示,如下图: 843 <br /> 844 <img src="../figures/arkts/cpuprofilerselects.jpg" alt="GitHub Logo" /> 845 <br /> 846 <img src="../figures/arkts/cpuprofilerdrags.jpg" alt="GitHub Logo" /> 847 </p> 848 <ul class="fontColor"> 849 <li> 850 <pre class="smartperf-text fontColor light"> 851Type : 维度名称,有九大维度(NAPI、ARKUI_ENGINE、BUTLTIN、GC、AINT、CINT、AOT、RUNTIME、OTHER)。 852</pre 853 > 854 </li> 855 <li> 856 <pre class="smartperf-text fontColor light"> 857Total : 时间。 858</pre 859 > 860 </li> 861 <li> 862 <pre class="smartperf-text fontColor light"> 863% : 时间占比。 864</pre 865 > 866 </li> 867 </ul> 868 <p class="fontColor"> 869 Js Profiler CallTree的Tab页把name,url,depth,parent相同的函数合并,构建成一个top 870 down的树结构,以树形表格的形式显示,表格中显示函数调用关系,如下图: 871 <br /> 872 <img src="../figures/arkts/cpuprofilerselectc.jpg" alt="GitHub Logo" /> 873 <br /> 874 <img src="../figures/arkts/cpuprofilerdragc.jpg" alt="GitHub Logo" /> 875 </p> 876 <ul class="fontColor"> 877 <li> 878 <pre class="smartperf-text fontColor light"> 879Symbol : 函数名。 880</pre 881 > 882 </li> 883 <li> 884 <pre class="smartperf-text fontColor light"> 885Self Time: 函数自身执行时间(不包含其调用者)。 886</pre 887 > 888 </li> 889 <li> 890 <pre class="smartperf-text fontColor light"> 891Total Time : 函数自身及调用者的调用时间总和。 892</pre 893 > 894 </li> 895 </ul> 896 <p class="fontColor"> 897 Js Profiler BottomUp的Tab页把name,url,depth,parent相同的函数合并,构建成一个bottom 898 up的树结构,以树形表格的形式显示,只不过作为根节点的是被调用者,表格中显示函数被调用关系,如下图: 899 <br /> 900 <img src="../figures/arkts/cpuprofilerselectb.jpg" alt="GitHub Logo" /> 901 <br /> 902 <img src="../figures/arkts/cpuprofilerdragb.jpg" alt="GitHub Logo" /> 903 </p> 904 <ul class="fontColor"> 905 <li> 906 <pre class="smartperf-text fontColor light"> 907Symbol : 函数名。 908</pre 909 > 910 </li> 911 <li> 912 <pre class="smartperf-text fontColor light"> 913Self Time: 函数自身执行时间(不包含其调用者)。 914</pre 915 > 916 </li> 917 <li> 918 <pre class="smartperf-text fontColor light"> 919Total Time : 函数自身及调用者的调用时间总和。 920</pre 921 > 922 </li> 923 </ul> 924 <h3 class="mume-header fontColor" id="header-index-5">Cpuprofiler的Heaviest Stack功能</h3> 925 926 <p class="fontColor"> 927 Js Profiler CallTree的Tab页的Heaviest Stack表格显示的是选中的函数的完整的调用栈。 928 <br /> 929 <img src="../figures/arkts/cpuprofilerheavic.jpg" alt="GitHub Logo" /> 930 <br /> 931 Js Profiler BottomUp的Tab页的Heaviest Stack表格显示的是选中的函数的完整的逆序调用栈。 932 <br /> 933 <img src="../figures/arkts/cpuprofilerheavib.jpg" alt="GitHub Logo" /> 934 </p> 935 <ul class="fontColor"> 936 <li> 937 <pre class="smartperf-text fontColor light"> 938Symbol : 函数名。 939</pre 940 > 941 </li> 942 <li> 943 <pre class="smartperf-text fontColor light"> 944Total Time : 函数自身及调用者的调用时间总和。 945</pre 946 > 947 </li> 948 <li> 949 <pre class="smartperf-text fontColor light"> 950% : 总时间占比。 951</pre 952 > 953 </li> 954 </ul> 955 </div> 956 957 <script> 958 window.onload = () => { 959 let isDark = getURLParameter('dark'); 960 let targetId = getURLParameter('targetId'); 961 let isBack = getURLParameter('isBack'); 962 if (isDark === 'true') { 963 document.getElementById('body').setAttribute('style', 'background-color:#272C34;'); 964 let header = document.getElementsByClassName('fontColor'); 965 for (let i = 0; i < header.length; i++) { 966 header[i].style.color = '#fff'; 967 } 968 let lightBackGround = document.getElementsByClassName('light'); 969 for (let i = 0; i < lightBackGround.length; i++) { 970 lightBackGround[i].style.backgroundColor = '#32373F'; 971 } 972 } 973 function getURLParameter(name) { 974 return (new URL(document.location)).searchParams.get(name); 975 } 976 977 if ( targetId !== null ) { 978 let targetElement = document.getElementById(targetId); 979 targetElement.scrollIntoView({ behavior: 'smooth' }); 980 } 981 }; 982 </script> 983 </body> 984</html> 985