diff options
author | Daniel Fischer <daniel.is.fischer@googlemail.com> | 2011-05-30 09:37:16 +0200 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2011-05-31 10:52:56 +0100 |
commit | 875aff5ddc34644992c64ac672c20f40971d7a49 (patch) | |
tree | b51021be3d32765f897e3e0a608456d7a4ea7397 /docs/users_guide/profiling.xml | |
parent | 9ef343972e74911b82776b7fff3d9a1dde803661 (diff) | |
download | haskell-875aff5ddc34644992c64ac672c20f40971d7a49.tar.gz |
profiling.xml whitespace
Diffstat (limited to 'docs/users_guide/profiling.xml')
-rw-r--r-- | docs/users_guide/profiling.xml | 92 |
1 files changed, 46 insertions, 46 deletions
diff --git a/docs/users_guide/profiling.xml b/docs/users_guide/profiling.xml index 00bbcdb8d4..204143d22d 100644 --- a/docs/users_guide/profiling.xml +++ b/docs/users_guide/profiling.xml @@ -8,7 +8,7 @@ <para> Glasgow Haskell comes with a time and space profiling system. Its purpose is to help you improve your understanding of your program's execution behaviour, so you can improve it.</para> - + <para> Any comments, suggestions and/or improvements you have are welcome. Recommended “profiling tricks” would be especially cool! </para> @@ -39,18 +39,18 @@ <indexterm><primary><option>-p</option></primary><secondary>RTS option</secondary></indexterm> </listitem> - + <listitem> <para> Examine the generated profiling information, using one of GHC's profiling tools. The tool to use will depend on the kind of profiling information generated.</para> </listitem> - + </orderedlist> - + <sect1 id="cost-centres"> <title>Cost centres and cost-centre stacks</title> - + <para>GHC's profiling system assigns <firstterm>costs</firstterm> to <firstterm>cost centres</firstterm>. A cost is simply the time or space required to evaluate an expression. Cost centres are @@ -385,7 +385,7 @@ x = nfib 25 </listitem> </varlistentry> </variablelist> - + <para>There are a few other profiling-related compilation options. Use them <emphasis>in addition to</emphasis> <option>-prof</option>. These do not have to be used consistently @@ -406,7 +406,7 @@ x = nfib 25 it manually.</para> </listitem> </varlistentry> - + <varlistentry> <term> <option>-auto-all</option>: @@ -509,7 +509,7 @@ x = nfib 25 </varlistentry> </variablelist> - + </sect1> <sect1 id="prof-heap"> @@ -541,7 +541,7 @@ x = nfib 25 file, <filename><replaceable>prog</replaceable>.ps</filename>. The <command>hp2ps</command> utility is described in detail in - <xref linkend="hp2ps"/>.</para> + <xref linkend="hp2ps"/>.</para> </listitem> <listitem> <para>Display the heap profile using a postscript viewer such @@ -612,7 +612,7 @@ x = nfib 25 represent an approximation to the actual type.</para> </listitem> </varlistentry> - + <varlistentry> <term> <option>-hr</option> @@ -644,7 +644,7 @@ x = nfib 25 to display a profile by type but only for data produced by a certain module, or a profile by retainer for a certain type of data. Restrictions are specified as follows:</para> - + <variablelist> <varlistentry> <term> @@ -702,7 +702,7 @@ x = nfib 25 types.</para> </listitem> </varlistentry> - + <varlistentry> <term> <option>-hr</option><replaceable>cc</replaceable>,... @@ -776,7 +776,7 @@ x = nfib 25 state in addition to the space allocated for its stack (stacks normally start small and then grow as necessary).</para> - + <para>This includes the main thread, so using <option>-xt</option> is a good way to see how much stack space the program is using.</para> @@ -802,7 +802,7 @@ x = nfib 25 </variablelist> </sect2> - + <sect2 id="retainer-prof"> <title>Retainer Profiling</title> @@ -843,7 +843,7 @@ x = nfib 25 set <literal>MANY</literal>. The maximum set size defaults to 8 and can be altered with the <option>-R</option> RTS option:</para> - + <variablelist> <varlistentry> <term><option>-R</option><replaceable>size</replaceable></term> @@ -883,7 +883,7 @@ x = nfib 25 <screen> <replaceable>prog</replaceable> +RTS -hr -hcB </screen> - + <para>This trick isn't foolproof, because there might be other B closures in the heap which aren't the retainers we are interested in, but we've found this to be a useful technique @@ -1004,9 +1004,9 @@ x = nfib 25 <indexterm><primary>heap profiles</primary></indexterm> <indexterm><primary>postscript, from heap profiles</primary></indexterm> <indexterm><primary><option>-h<break-down></option></primary></indexterm> - + <para>Usage:</para> - + <screen> hp2ps [flags] [<file>[.hp]] </screen> @@ -1030,7 +1030,7 @@ hp2ps [flags] [<file>[.hp]] <para>The flags are:</para> <variablelist> - + <varlistentry> <term><option>-d</option></term> <listitem> @@ -1136,7 +1136,7 @@ hp2ps [flags] [<file>[.hp]] <para>Use a small box for the title.</para> </listitem> </varlistentry> - + <varlistentry> <term><option>-t<float></option></term> <listitem> @@ -1157,14 +1157,14 @@ hp2ps [flags] [<file>[.hp]] <para>Generate colour output.</para> </listitem> </varlistentry> - + <varlistentry> <term><option>-y</option></term> <listitem> <para>Ignore marks.</para> </listitem> </varlistentry> - + <varlistentry> <term><option>-?</option></term> <listitem> @@ -1256,7 +1256,7 @@ profile of your program as it runs. Simply generate an incremental heap profile as described in the previous section. Run <command>gv</command> on your profile: <screen> - gv -watch -seascape FOO.ps + gv -watch -seascape FOO.ps </screen> If you forget the <literal>-watch</literal> flag you can still select "Watch file" from the "State" menu. Now each time you generate a new @@ -1292,7 +1292,7 @@ to re-read its input file: head -`fgrep -n END_SAMPLE FOO.hp | tail -1 | cut -d : -f 1` FOO.hp \ | hp2ps > FOO.ps kill -HUP $gvpsnum - done + done </screen> </para> </sect2> @@ -1335,7 +1335,7 @@ to re-read its input file: a yellow background indicates a part of the program that was never evaluated; a green background indicates an always-True expression and a red background indicates an always-False one. - </para> + </para> <sect2><title>A small example: Reciprocation</title> @@ -1381,10 +1381,10 @@ main = do </para> <screen> -$ ghc -fhpc Recip.hs --make +$ ghc -fhpc Recip.hs --make </screen> <para>HPC index (.mix) files are placed placed in .hpc subdirectory. These can be considered like - the .hi files for HPC. + the .hi files for HPC. </para> <screen> $ ./Recip @@ -1396,8 +1396,8 @@ $ ./Recip $ hpc report Recip 80% expressions used (81/101) 12% boolean coverage (1/8) - 14% guards (1/7), 3 always True, - 1 always False, + 14% guards (1/7), 3 always True, + 1 always False, 2 unevaluated 0% 'if' conditions (0/1), 1 always False 100% qualifiers (0/0) @@ -1415,11 +1415,11 @@ writing Recip.hs.html hpc_index.html, hpc_index_alt.html, hpc_index_exp.html, hpc_index_fun.html. </para> - </sect2> + </sect2> <sect2><title>Options for instrumenting code for coverage</title> <para> - Turning on code coverage is easy, use the -fhpc flag. + Turning on code coverage is easy, use the -fhpc flag. Instrumented and non-instrumented can be freely mixed. When compiling the Main module GHC automatically detects when there is an hpc compiled file, and adds the correct initialization code. @@ -1431,9 +1431,9 @@ writing Recip.hs.html <para> The hpc toolkit uses a cvs/svn/darcs-like interface, where a - single binary contains many function units.</para> + single binary contains many function units.</para> <screen> -$ hpc +$ hpc Usage: hpc COMMAND ... Commands: @@ -1456,9 +1456,9 @@ Others: <para>In general, these options act on .tix file after an instrumented binary has generated it, which hpc acting as a conduit between the raw .tix file, and the more detailed reports - produced. + produced. </para> - + <para> The hpc tool assumes you are in the top-level directory of the location where you built your application, and the .tix @@ -1467,7 +1467,7 @@ Others: --srcdir multiple times to analyse programs compiled from difference locations, as is typical for packages. </para> - + <para> We now explain in more details the major modes of hpc. </para> @@ -1477,8 +1477,8 @@ Others: all modules and packages are considered in generating report, unless include or exclude are used. The report is a summary unless the --per-module flag is used. The --xml-output option - allows for tools to use hpc to glean coverage. - </para> + allows for tools to use hpc to glean coverage. + </para> <screen> $ hpc help report Usage: hpc report [OPTION] .. <TIX_FILE> [<MODULE> [<MODULE> ..]] @@ -1518,8 +1518,8 @@ Options: </sect3> <sect3><title>hpc sum</title> - <para>hpc sum adds together any number of .tix files into a single - .tix file. hpc sum does not change the original .tix file; it generates a new .tix file. + <para>hpc sum adds together any number of .tix files into a single + .tix file. hpc sum does not change the original .tix file; it generates a new .tix file. </para> <screen> $ hpc help sum @@ -1535,10 +1535,10 @@ Options: </screen> </sect3> <sect3><title>hpc combine</title> - <para>hpc combine is the swiss army knife of hpc. It can be + <para>hpc combine is the swiss army knife of hpc. It can be used to take the difference between .tix files, to subtract one .tix file from another, or to add two .tix files. hpc combine does not - change the original .tix file; it generates a new .tix file. + change the original .tix file; it generates a new .tix file. </para> <screen> $ hpc help combine @@ -1557,11 +1557,11 @@ Options: </sect3> <sect3><title>hpc map</title> <para>hpc map inverts or zeros a .tix file. hpc map does not - change the original .tix file; it generates a new .tix file. + change the original .tix file; it generates a new .tix file. </para> <screen> $ hpc help map -Usage: hpc map [OPTION] .. <TIX_FILE> +Usage: hpc map [OPTION] .. <TIX_FILE> Map a function over a single .tix file Options: @@ -1591,7 +1591,7 @@ Options: --hpcdir=DIR sub-directory that contains .mix files default .hpc [rarely used] --output=FILE output FILE -% hpc help draft +% hpc help draft Usage: hpc draft [OPTION] .. <TIX_FILE> Options: @@ -1678,7 +1678,7 @@ Options: the invocation <command>foo +RTS -rfoo.ticky</command>. </para> - + <screen> foo +RTS -rfoo.ticky |