OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [libstdc++-v3/] [doc/] [html/] [manual/] [profile_mode.html] - Diff between revs 816 and 826

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 816 Rev 826
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 32. Profile Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content="&#10;      C++&#10;    , &#10;      library&#10;    , &#10;      profile&#10;    " /><meta name="keywords" content="&#10;      ISO C++&#10;    , &#10;      library&#10;    " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bk01pt12ch31s05.html" title="Testing" /><link rel="next" href="bk01pt12ch32s02.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. Profile Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><th width="60%" align="center">Part XII. 
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 32. Profile Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content="&#10;      C++&#10;    , &#10;      library&#10;    , &#10;      profile&#10;    " /><meta name="keywords" content="&#10;      ISO C++&#10;    , &#10;      library&#10;    " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bk01pt12ch31s05.html" title="Testing" /><link rel="next" href="bk01pt12ch32s02.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. Profile Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><th width="60%" align="center">Part XII. 
  Extensions
  Extensions
 
 
</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 32. Profile Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"></a>Chapter 32. Profile Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p>
</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 32. Profile Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"></a>Chapter 32. Profile Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p>
  <span class="emphasis"><em>Goal: </em></span>Give performance improvement advice based on
  <span class="emphasis"><em>Goal: </em></span>Give performance improvement advice based on
  recognition of suboptimal usage patterns of the standard library.
  recognition of suboptimal usage patterns of the standard library.
  </p><p>
  </p><p>
  <span class="emphasis"><em>Method: </em></span>Wrap the standard library code.  Insert
  <span class="emphasis"><em>Method: </em></span>Wrap the standard library code.  Insert
  calls to an instrumentation library to record the internal state of
  calls to an instrumentation library to record the internal state of
  various components at interesting entry/exit points to/from the standard
  various components at interesting entry/exit points to/from the standard
  library.  Process trace, recognize suboptimal patterns, give advice.
  library.  Process trace, recognize suboptimal patterns, give advice.
  For details, see
  For details, see
  <a class="ulink" href="http://dx.doi.org/10.1109/CGO.2009.36" target="_top">paper presented at
  <a class="ulink" href="http://dx.doi.org/10.1109/CGO.2009.36" target="_top">paper presented at
   CGO 2009</a>.
   CGO 2009</a>.
  </p><p>
  </p><p>
  <span class="emphasis"><em>Strengths: </em></span>
  <span class="emphasis"><em>Strengths: </em></span>
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  Unintrusive solution.  The application code does not require any
  Unintrusive solution.  The application code does not require any
  modification.
  modification.
  </p></li><li class="listitem"><p> The advice is call context sensitive, thus capable of
  </p></li><li class="listitem"><p> The advice is call context sensitive, thus capable of
  identifying precisely interesting dynamic performance behavior.
  identifying precisely interesting dynamic performance behavior.
  </p></li><li class="listitem"><p>
  </p></li><li class="listitem"><p>
  The overhead model is pay-per-view.  When you turn off a diagnostic class
  The overhead model is pay-per-view.  When you turn off a diagnostic class
  at compile time, its overhead disappears.
  at compile time, its overhead disappears.
  </p></li></ul></div><p>
  </p></li></ul></div><p>
  </p><p>
  </p><p>
  <span class="emphasis"><em>Drawbacks: </em></span>
  <span class="emphasis"><em>Drawbacks: </em></span>
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  You must recompile the application code with custom options.
  You must recompile the application code with custom options.
  </p></li><li class="listitem"><p>You must run the application on representative input.
  </p></li><li class="listitem"><p>You must run the application on representative input.
  The advice is input dependent.
  The advice is input dependent.
  </p></li><li class="listitem"><p>
  </p></li><li class="listitem"><p>
  The execution time will increase, in some cases by factors.
  The execution time will increase, in some cases by factors.
  </p></li></ul></div><p>
  </p></li></ul></div><p>
  </p><div class="sect2" title="Using the Profile Mode"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.using"></a>Using the Profile Mode</h3></div></div></div><p>
  </p><div class="sect2" title="Using the Profile Mode"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.using"></a>Using the Profile Mode</h3></div></div></div><p>
  This is the anticipated common workflow for program <code class="code">foo.cc</code>:
  This is the anticipated common workflow for program <code class="code">foo.cc</code>:
</p><pre class="programlisting">
</p><pre class="programlisting">
$ cat foo.cc
$ cat foo.cc
#include &lt;vector&gt;
#include &lt;vector&gt;
int main() {
int main() {
  vector&lt;int&gt; v;
  vector&lt;int&gt; v;
  for (int k = 0; k &lt; 1024; ++k) v.insert(v.begin(), k);
  for (int k = 0; k &lt; 1024; ++k) v.insert(v.begin(), k);
}
}
 
 
$ g++ -D_GLIBCXX_PROFILE foo.cc
$ g++ -D_GLIBCXX_PROFILE foo.cc
$ ./a.out
$ ./a.out
$ cat libstdcxx-profile.txt
$ cat libstdcxx-profile.txt
vector-to-list: improvement = 5: call stack = 0x804842c ...
vector-to-list: improvement = 5: call stack = 0x804842c ...
    : advice = change std::vector to std::list
    : advice = change std::vector to std::list
vector-size: improvement = 3: call stack = 0x804842c ...
vector-size: improvement = 3: call stack = 0x804842c ...
    : advice = change initial container size from 0 to 1024
    : advice = change initial container size from 0 to 1024
</pre><p>
</pre><p>
  </p><p>
  </p><p>
  Anatomy of a warning:
  Anatomy of a warning:
  </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  Warning id.  This is a short descriptive string for the class
  Warning id.  This is a short descriptive string for the class
  that this warning belongs to.  E.g., "vector-to-list".
  that this warning belongs to.  E.g., "vector-to-list".
  </p></li><li class="listitem"><p>
  </p></li><li class="listitem"><p>
  Estimated improvement.  This is an approximation of the benefit expected
  Estimated improvement.  This is an approximation of the benefit expected
  from implementing the change suggested by the warning.  It is given on
  from implementing the change suggested by the warning.  It is given on
  a log10 scale.  Negative values mean that the alternative would actually
  a log10 scale.  Negative values mean that the alternative would actually
  do worse than the current choice.
  do worse than the current choice.
  In the example above, 5 comes from the fact that the overhead of
  In the example above, 5 comes from the fact that the overhead of
  inserting at the beginning of a vector vs. a list is around 1024 * 1024 / 2,
  inserting at the beginning of a vector vs. a list is around 1024 * 1024 / 2,
  which is around 10e5.  The improvement from setting the initial size to
  which is around 10e5.  The improvement from setting the initial size to
  1024 is in the range of 10e3, since the overhead of dynamic resizing is
  1024 is in the range of 10e3, since the overhead of dynamic resizing is
  linear in this case.
  linear in this case.
  </p></li><li class="listitem"><p>
  </p></li><li class="listitem"><p>
  Call stack.  Currently, the addresses are printed without
  Call stack.  Currently, the addresses are printed without
  symbol name or code location attribution.
  symbol name or code location attribution.
  Users are expected to postprocess the output using, for instance, addr2line.
  Users are expected to postprocess the output using, for instance, addr2line.
  </p></li><li class="listitem"><p>
  </p></li><li class="listitem"><p>
  The warning message.  For some warnings, this is static text, e.g.,
  The warning message.  For some warnings, this is static text, e.g.,
  "change vector to list".  For other warnings, such as the one above,
  "change vector to list".  For other warnings, such as the one above,
  the message contains numeric advice, e.g., the suggested initial size
  the message contains numeric advice, e.g., the suggested initial size
  of the hashtable.
  of the hashtable.
  </p></li></ul></div><p>
  </p></li></ul></div><p>
  </p><p>Three files are generated.  <code class="code">libstdcxx-profile.txt</code>
  </p><p>Three files are generated.  <code class="code">libstdcxx-profile.txt</code>
   contains human readable advice.  <code class="code">libstdcxx-profile.raw</code>
   contains human readable advice.  <code class="code">libstdcxx-profile.raw</code>
   contains implementation specific data about each diagnostic.
   contains implementation specific data about each diagnostic.
   Their format is not documented.  They are sufficient to generate
   Their format is not documented.  They are sufficient to generate
   all the advice given in <code class="code">libstdcxx-profile.txt</code>.  The advantage
   all the advice given in <code class="code">libstdcxx-profile.txt</code>.  The advantage
   of keeping this raw format is that traces from multiple executions can
   of keeping this raw format is that traces from multiple executions can
   be aggregated simply by concatenating the raw traces.  We intend to
   be aggregated simply by concatenating the raw traces.  We intend to
   offer an external utility program that can issue advice from a trace.
   offer an external utility program that can issue advice from a trace.
   <code class="code">libstdcxx-profile.conf.out</code> lists the actual diagnostic
   <code class="code">libstdcxx-profile.conf.out</code> lists the actual diagnostic
   parameters used.  To alter parameters, edit this file and rename it to
   parameters used.  To alter parameters, edit this file and rename it to
   <code class="code">libstdcxx-profile.conf</code>.
   <code class="code">libstdcxx-profile.conf</code>.
  </p><p>Advice is given regardless whether the transformation is valid.
  </p><p>Advice is given regardless whether the transformation is valid.
  For instance, we advise changing a map to an unordered_map even if the
  For instance, we advise changing a map to an unordered_map even if the
  application semantics require that data be ordered.
  application semantics require that data be ordered.
  We believe such warnings can help users understand the performance
  We believe such warnings can help users understand the performance
  behavior of their application better, which can lead to changes
  behavior of their application better, which can lead to changes
  at a higher abstraction level.
  at a higher abstraction level.
  </p></div><div class="sect2" title="Tuning the Profile Mode"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.tuning"></a>Tuning the Profile Mode</h3></div></div></div><p>Compile time switches and environment variables (see also file
  </p></div><div class="sect2" title="Tuning the Profile Mode"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.tuning"></a>Tuning the Profile Mode</h3></div></div></div><p>Compile time switches and environment variables (see also file
   profiler.h).  Unless specified otherwise, they can be set at compile time
   profiler.h).  Unless specified otherwise, they can be set at compile time
   using -D_&lt;name&gt; or by setting variable &lt;name&gt;
   using -D_&lt;name&gt; or by setting variable &lt;name&gt;
   in the environment where the program is run, before starting execution.
   in the environment where the program is run, before starting execution.
  </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
   <code class="code">_GLIBCXX_PROFILE_NO_&lt;diagnostic&gt;</code>:
   <code class="code">_GLIBCXX_PROFILE_NO_&lt;diagnostic&gt;</code>:
   disable specific diagnostics.
   disable specific diagnostics.
   See section Diagnostics for possible values.
   See section Diagnostics for possible values.
   (Environment variables not supported.)
   (Environment variables not supported.)
   </p></li><li class="listitem"><p>
   </p></li><li class="listitem"><p>
   <code class="code">_GLIBCXX_PROFILE_TRACE_PATH_ROOT</code>: set an alternative root
   <code class="code">_GLIBCXX_PROFILE_TRACE_PATH_ROOT</code>: set an alternative root
   path for the output files.
   path for the output files.
   </p></li><li class="listitem"><p>_GLIBCXX_PROFILE_MAX_WARN_COUNT: set it to the maximum
   </p></li><li class="listitem"><p>_GLIBCXX_PROFILE_MAX_WARN_COUNT: set it to the maximum
   number of warnings desired.  The default value is 10.</p></li><li class="listitem"><p>
   number of warnings desired.  The default value is 10.</p></li><li class="listitem"><p>
   <code class="code">_GLIBCXX_PROFILE_MAX_STACK_DEPTH</code>: if set to 0,
   <code class="code">_GLIBCXX_PROFILE_MAX_STACK_DEPTH</code>: if set to 0,
   the advice will
   the advice will
   be collected and reported for the program as a whole, and not for each
   be collected and reported for the program as a whole, and not for each
   call context.
   call context.
   This could also be used in continuous regression tests, where you
   This could also be used in continuous regression tests, where you
   just need to know whether there is a regression or not.
   just need to know whether there is a regression or not.
   The default value is 32.
   The default value is 32.
   </p></li><li class="listitem"><p>
   </p></li><li class="listitem"><p>
   <code class="code">_GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC</code>:
   <code class="code">_GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC</code>:
   set a limit on how much memory to use for the accounting tables for each
   set a limit on how much memory to use for the accounting tables for each
   diagnostic type.  When this limit is reached, new events are ignored
   diagnostic type.  When this limit is reached, new events are ignored
   until the memory usage decreases under the limit.  Generally, this means
   until the memory usage decreases under the limit.  Generally, this means
   that newly created containers will not be instrumented until some
   that newly created containers will not be instrumented until some
   live containers are deleted.  The default is 128 MB.
   live containers are deleted.  The default is 128 MB.
   </p></li><li class="listitem"><p>
   </p></li><li class="listitem"><p>
   <code class="code">_GLIBCXX_PROFILE_NO_THREADS</code>:
   <code class="code">_GLIBCXX_PROFILE_NO_THREADS</code>:
   Make the library not use threads.  If thread local storage (TLS) is not
   Make the library not use threads.  If thread local storage (TLS) is not
   available, you will get a preprocessor error asking you to set
   available, you will get a preprocessor error asking you to set
   -D_GLIBCXX_PROFILE_NO_THREADS if your program is single-threaded.
   -D_GLIBCXX_PROFILE_NO_THREADS if your program is single-threaded.
   Multithreded execution without TLS is not supported.
   Multithreded execution without TLS is not supported.
   (Environment variable not supported.)
   (Environment variable not supported.)
   </p></li><li class="listitem"><p>
   </p></li><li class="listitem"><p>
   <code class="code">_GLIBCXX_HAVE_EXECINFO_H</code>:
   <code class="code">_GLIBCXX_HAVE_EXECINFO_H</code>:
   This name should be defined automatically at library configuration time.
   This name should be defined automatically at library configuration time.
   If your library was configured without <code class="code">execinfo.h</code>, but
   If your library was configured without <code class="code">execinfo.h</code>, but
   you have it in your include path, you can define it explicitly.  Without
   you have it in your include path, you can define it explicitly.  Without
   it, advice is collected for the program as a whole, and not for each
   it, advice is collected for the program as a whole, and not for each
   call context.
   call context.
   (Environment variable not supported.)
   (Environment variable not supported.)
   </p></li></ul></div><p>
   </p></li></ul></div><p>
  </p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="Perflint: A Context Sensitive Performance Advisor for C++ Programs"><a id="id631630"></a><p><span class="title"><i>
  </p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="Perflint: A Context Sensitive Performance Advisor for C++ Programs"><a id="id631630"></a><p><span class="title"><i>
      Perflint: A Context Sensitive Performance Advisor for C++ Programs
      Perflint: A Context Sensitive Performance Advisor for C++ Programs
    </i>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername">
    </i>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername">
        Proceedings of the 2009 International Symposium on Code Generation
        Proceedings of the 2009 International Symposium on Code Generation
        and Optimization
        and Optimization
      . </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Testing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
      . </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Testing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.