You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 line
5.8KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- This file documents the gprof profiler of the GNU system.
  4. Copyright (C) 1988-2020 Free Software Foundation, Inc.
  5. Permission is granted to copy, distribute and/or modify this document
  6. under the terms of the GNU Free Documentation License, Version 1.3
  7. or any later version published by the Free Software Foundation;
  8. with no Invariant Sections, with no Front-Cover Texts, and with no
  9. Back-Cover Texts. A copy of the license is included in the
  10. section entitled "GNU Free Documentation License".
  11. -->
  12. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  15. <title>Introduction (GNU gprof)</title>
  16. <meta name="description" content="Introduction (GNU gprof)">
  17. <meta name="keywords" content="Introduction (GNU gprof)">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  21. <link href="index.html#Top" rel="start" title="Top">
  22. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  23. <link href="index.html#Top" rel="up" title="Top">
  24. <link href="Compiling.html#Compiling" rel="next" title="Compiling">
  25. <link href="index.html#Top" rel="prev" title="Top">
  26. <style type="text/css">
  27. <!--
  28. a.summary-letter {text-decoration: none}
  29. blockquote.indentedblock {margin-right: 0em}
  30. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  31. blockquote.smallquotation {font-size: smaller}
  32. div.display {margin-left: 3.2em}
  33. div.example {margin-left: 3.2em}
  34. div.lisp {margin-left: 3.2em}
  35. div.smalldisplay {margin-left: 3.2em}
  36. div.smallexample {margin-left: 3.2em}
  37. div.smalllisp {margin-left: 3.2em}
  38. kbd {font-style: oblique}
  39. pre.display {font-family: inherit}
  40. pre.format {font-family: inherit}
  41. pre.menu-comment {font-family: serif}
  42. pre.menu-preformatted {font-family: serif}
  43. pre.smalldisplay {font-family: inherit; font-size: smaller}
  44. pre.smallexample {font-size: smaller}
  45. pre.smallformat {font-family: inherit; font-size: smaller}
  46. pre.smalllisp {font-size: smaller}
  47. span.nolinebreak {white-space: nowrap}
  48. span.roman {font-family: initial; font-weight: normal}
  49. span.sansserif {font-family: sans-serif; font-weight: normal}
  50. ul.no-bullet {list-style: none}
  51. -->
  52. </style>
  53. </head>
  54. <body lang="en">
  55. <a name="Introduction"></a>
  56. <div class="header">
  57. <p>
  58. Next: <a href="Compiling.html#Compiling" accesskey="n" rel="next">Compiling</a>, Previous: <a href="index.html#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
  59. </div>
  60. <hr>
  61. <a name="Introduction-to-Profiling"></a>
  62. <h2 class="chapter">1 Introduction to Profiling</h2>
  63. <p>Profiling allows you to learn where your program spent its time and which
  64. functions called which other functions while it was executing. This
  65. information can show you which pieces of your program are slower than you
  66. expected, and might be candidates for rewriting to make your program
  67. execute faster. It can also tell you which functions are being called more
  68. or less often than you expected. This may help you spot bugs that had
  69. otherwise been unnoticed.
  70. </p>
  71. <p>Since the profiler uses information collected during the actual execution
  72. of your program, it can be used on programs that are too large or too
  73. complex to analyze by reading the source. However, how your program is run
  74. will affect the information that shows up in the profile data. If you
  75. don&rsquo;t use some feature of your program while it is being profiled, no
  76. profile information will be generated for that feature.
  77. </p>
  78. <p>Profiling has several steps:
  79. </p>
  80. <ul>
  81. <li> You must compile and link your program with profiling enabled.
  82. See <a href="Compiling.html#Compiling">Compiling a Program for Profiling</a>.
  83. </li><li> You must execute your program to generate a profile data file.
  84. See <a href="Executing.html#Executing">Executing the Program</a>.
  85. </li><li> You must run <code>gprof</code> to analyze the profile data.
  86. See <a href="Invoking.html#Invoking"><code>gprof</code> Command Summary</a>.
  87. </li></ul>
  88. <p>The next three chapters explain these steps in greater detail.
  89. </p>
  90. <p>Several forms of output are available from the analysis.
  91. </p>
  92. <p>The <em>flat profile</em> shows how much time your program spent in each function,
  93. and how many times that function was called. If you simply want to know
  94. which functions burn most of the cycles, it is stated concisely here.
  95. See <a href="Flat-Profile.html#Flat-Profile">The Flat Profile</a>.
  96. </p>
  97. <p>The <em>call graph</em> shows, for each function, which functions called it, which
  98. other functions it called, and how many times. There is also an estimate
  99. of how much time was spent in the subroutines of each function. This can
  100. suggest places where you might try to eliminate function calls that use a
  101. lot of time. See <a href="Call-Graph.html#Call-Graph">The Call Graph</a>.
  102. </p>
  103. <p>The <em>annotated source</em> listing is a copy of the program&rsquo;s
  104. source code, labeled with the number of times each line of the
  105. program was executed. See <a href="Annotated-Source.html#Annotated-Source">The Annotated Source
  106. Listing</a>.
  107. </p>
  108. <p>To better understand how profiling works, you may wish to read
  109. a description of its implementation.
  110. See <a href="Implementation.html#Implementation">Implementation of Profiling</a>.
  111. </p>
  112. <hr>
  113. <div class="header">
  114. <p>
  115. Next: <a href="Compiling.html#Compiling" accesskey="n" rel="next">Compiling</a>, Previous: <a href="index.html#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
  116. </div>
  117. </body>
  118. </html>