<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How does Intel's VTune works? in Analyzers</title>
    <link>https://community.intel.com/t5/Analyzers/How-does-Intel-s-VTune-works/m-p/914380#M5941</link>
    <description>The VTune analyzer doesn't really "consider" time at all! When the interrupt occurs because of an event trigger, the VTune analyzer ISR records the things like process ID, thread ID, and instruction pointer. Later, during post-processing, because it has collected info about modules, processes, and threads, it can determine which functions in which modules in which thread in which process the sample was taken. Thus, the info displayed is the number of samples that occurred within that function (for the selected process/thread/module).&lt;BR /&gt;&lt;BR /&gt;So, in your example, the interrupt in function A() results in a sample being recorded in function A(). Likewise, the interrupt in function B() results in a sample being recorded in function B(). Sampling presents a "statistical" representation of relative active-ness of various parts of the code.&lt;BR /&gt;&lt;BR /&gt;Thus, what your results confirmed was that your assembly version resulted in fewer samples occurring in that function than when it was written in the high-level language (assuming the order is sorted from highest to lowest and that it was a high-level language, initially :-).&lt;BR /&gt;</description>
    <pubDate>Wed, 30 Aug 2006 07:28:33 GMT</pubDate>
    <dc:creator>David_A_Intel1</dc:creator>
    <dc:date>2006-08-30T07:28:33Z</dc:date>
    <item>
      <title>How does Intel's VTune works?</title>
      <link>https://community.intel.com/t5/Analyzers/How-does-Intel-s-VTune-works/m-p/914379#M5940</link>
      <description>I need to optimize a program on Intel's XScale, so I use VTune to &lt;BR /&gt;find the hot spot. I use &lt;BR /&gt;sampling to locate the hot spot. &lt;BR /&gt;At first, the functions lists according to its used time &lt;BR /&gt;Function &lt;BR /&gt;A &lt;BR /&gt;B &lt;BR /&gt;C &lt;BR /&gt;D &lt;BR /&gt;E &lt;BR /&gt;
&lt;P&gt;But after I have written assembly source for A, and run VTune again, &lt;BR /&gt;but the result is confusing &lt;BR /&gt;C &lt;BR /&gt;B &lt;BR /&gt;A &lt;BR /&gt;E &lt;BR /&gt;D &lt;BR /&gt;
&lt;/P&gt;&lt;P&gt;XScale hardware provides several performance counter. &lt;BR /&gt;Each counter can trigger interrupts, and VTune do the time statistics &lt;BR /&gt;in ISR. &lt;BR /&gt;Using sampling, VTune interrupts the program at interval. &lt;BR /&gt;For example, there are two functions in a souce file: &lt;BR /&gt;void A &lt;BR /&gt;{ &lt;BR /&gt;    a1; &lt;BR /&gt;    a2; &lt;BR /&gt;-------------- trigger a interrupt &lt;BR /&gt;    a3; &lt;BR /&gt;    a4; &lt;BR /&gt;
&lt;/P&gt;&lt;DIV class="qt" id="qhide_7068" style="DISPLAY: block"&gt;} &lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;void B &lt;BR /&gt;{ &lt;BR /&gt;    b1; &lt;BR /&gt;    b2; &lt;BR /&gt;--------------- trigger a interrupt &lt;BR /&gt;    b3; &lt;BR /&gt;    b4; &lt;BR /&gt;
&lt;P&gt;
&lt;/P&gt;&lt;DIV class="qt" id="qhide_7069" style="DISPLAY: block"&gt;} &lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;VTune will consider the time between interrupts is consumed by B? &lt;BR /&gt;How does VTune do? &lt;BR /&gt;</description>
      <pubDate>Wed, 09 Aug 2006 10:24:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Analyzers/How-does-Intel-s-VTune-works/m-p/914379#M5940</guid>
      <dc:creator>mountaineer</dc:creator>
      <dc:date>2006-08-09T10:24:47Z</dc:date>
    </item>
    <item>
      <title>Re: How does Intel's VTune works?</title>
      <link>https://community.intel.com/t5/Analyzers/How-does-Intel-s-VTune-works/m-p/914380#M5941</link>
      <description>The VTune analyzer doesn't really "consider" time at all! When the interrupt occurs because of an event trigger, the VTune analyzer ISR records the things like process ID, thread ID, and instruction pointer. Later, during post-processing, because it has collected info about modules, processes, and threads, it can determine which functions in which modules in which thread in which process the sample was taken. Thus, the info displayed is the number of samples that occurred within that function (for the selected process/thread/module).&lt;BR /&gt;&lt;BR /&gt;So, in your example, the interrupt in function A() results in a sample being recorded in function A(). Likewise, the interrupt in function B() results in a sample being recorded in function B(). Sampling presents a "statistical" representation of relative active-ness of various parts of the code.&lt;BR /&gt;&lt;BR /&gt;Thus, what your results confirmed was that your assembly version resulted in fewer samples occurring in that function than when it was written in the high-level language (assuming the order is sorted from highest to lowest and that it was a high-level language, initially :-).&lt;BR /&gt;</description>
      <pubDate>Wed, 30 Aug 2006 07:28:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Analyzers/How-does-Intel-s-VTune-works/m-p/914380#M5941</guid>
      <dc:creator>David_A_Intel1</dc:creator>
      <dc:date>2006-08-30T07:28:33Z</dc:date>
    </item>
  </channel>
</rss>

