/usr/share/doc/racket/contract-profile/index.html is in racket-doc 6.1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>Contract Profiling</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;">•</td><td></td><td><a href="" class="tocviewselflink" data-pltdoc="x">Contract Profiling</a></td></tr></table></div></div></div><div class="tocsub"><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber"></span><a href="#%28part._top%29" class="tocsubseclink" data-pltdoc="x">Contract Profiling</a></td></tr><tr><td><a href="#%28form._%28%28lib._contract-profile%2Fmain..rkt%29._contract-profile%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">contract-<wbr></wbr>profile</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._contract-profile%2Fmain..rkt%29._contract-profile-thunk%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">contract-<wbr></wbr>profile-<wbr></wbr>thunk</span></a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="version">6.1</span></div><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <span class="nonavigation">← prev</span> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">up</a> <span class="nonavigation">next →</span></span> </div><h2 x-source-module="(lib "contract-profile/scribblings/contract-profile.scrbl")" x-part-tag=""top""><a name="(part._top)"></a><a name="(part._contract-profiling)"></a><a name="(mod-path._contract-profile)"></a>Contract Profiling</h2><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="" class="RktModLink" data-pltdoc="x"><span class="RktSym">contract-profile</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">contract-profile</span></span></td></tr></table></p><p>This module provides experimental support for contract profiling.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>syntax</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(form._((lib._contract-profile/main..rkt)._contract-profile))"></a><span title="Provided from: contract-profile | Package: contract-profile"><span class="RktSym"><span class="RktSymDef RktSym">contract-profile</span></span></span><span class="hspace"> </span><span class="RktVar">body</span><span class="hspace"> </span><span class="RktMeta">...</span><span class="RktPn">)</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Produces several reports about the performance costs related to contract
checking in <span class="RktVar">body</span>. Each of these reports is printed to a separate
file.</div></p><ul><li><p><span style="font-style: italic">Cost Breakdown</span> (in <span class="stt">tmp-contract-profile-cost-breakdown.txt</span>):
Displays the proportion of <span class="RktVar">body</span>’s running time that was spent
checking contracts and breaks that time down by contract, then by contracted
function and finally by caller for each contracted function.</p></li><li><p><span style="font-style: italic">Module Graph View</span> (in <span class="stt">tmp-contract-profile-module-graph.dot.pdf</span>):
Shows a graph of modules (nodes) and the contract boundaries (edges) between
them that were crossed while running <span class="RktVar">body</span>.</p><p>The weight on each contract boundary edge corresponds to the time spent
checking contracts applied at this boundary.
Modules written in Typed Racket are displayed in green and untyped modules
are displayed in red.</p><p>These graphs are rendered using Graphviz. The Graphviz source is available in
<span class="stt">tmp-contract-profile-module-graph.dot</span>. The rendered version of the graph
is only available if the contract profiler can locate a Graphviz install.</p></li><li><p><span style="font-style: italic">Boundary View</span> (in <span class="stt">tmp-contract-profile-boundary-graph.dot.pdf</span>):
Shows a detailed view of how contract checking costs are spread out across
contracted functions, broken down by contract boundary.</p><p>Contracted functions are shown as rectangular nodes colored according to the
cost of checking their contracts.
Edges represent function calls that cross contract boundaries and cause
contracts to be applied. These edges are extracted from profiling
information, and therefore represent incomplete information. Because of this,
the contract profiler sometimes cannot determine the callers of contracted
functions.
Non-contracted functions that call contracted functions across a boundary are
shown as gray ellipsoid nodes. Nodes are clustered by module. </p><p>Each node reports its (non-contract-related) self time. In addition,
contracted function nodes list the contract boundaries the function
participates in, as well as the cost of checking the contracts associated
with each boundary. For space reasons, full contracts are not displayed on
the graph and are instead numbered. The mapping from numbers to contracts is
found in <span class="stt">tmp-contract-profile-contract-key.txt</span>.</p><p>These graphs are rendered using Graphviz. The Graphviz source is available in
<span class="stt">tmp-contract-profile-boundary-graph.dot</span>. The rendered version of the graph
is only available if the contract profiler can locate a Graphviz install.</p></li></ul><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._contract-profile/main..rkt)._contract-profile-thunk))"></a><span title="Provided from: contract-profile | Package: contract-profile"><span class="RktSym"><span class="RktSymDef RktSym">contract-profile-thunk</span></span></span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">any</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-></span></a></span><span class="hspace"> </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktSym">contract-profile</span>, but as a function which takes a thunk to
profile as argument.</div></p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <span class="nonavigation">← prev</span> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">up</a> <span class="nonavigation">next →</span></span> </div></div></div><div id="contextindicator"> </div></body></html>
|