[jboss-svn-commits] JBL Code SVN: r31580 - labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 11 15:09:34 EST 2010


Author: whitingjr
Date: 2010-02-11 15:09:33 -0500 (Thu, 11 Feb 2010)
New Revision: 31580

Modified:
   labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/agregate.xsl
   labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/analyseresults.xsl
   labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/average-results.xsl
   labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/merge-thread-results.xsl
Log:
Improved performance of stylesheets.

Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/agregate.xsl
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/agregate.xsl	2010-02-11 19:44:20 UTC (rev 31579)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/agregate.xsl	2010-02-11 20:09:33 UTC (rev 31580)
@@ -43,46 +43,49 @@
       
          <xsl:element name="frame">
             <xsl:attribute name="mn"><xsl:text>other</xsl:text> </xsl:attribute>
-	         <xsl:element name="methodDuration">
+            <xsl:attribute name="t">
+               <xsl:value-of select="$category0/frame/@t - ($categoryB/frame/@t + $categoryC/frame/@t + $categoryD/frame/@t)"/>
+            </xsl:attribute>
+	         <!-- xsl:element name="methodDuration">
                <xsl:element name="average-gross">
                   <xsl:value-of select="$category0/frame/methodDuration/average-gross - sum(//frame[@mn!=$category0/frame/@mn]/methodDuration/average-gross)"/>
                </xsl:element>
-               <!-- xsl:element name="average-net">
+               <xsl:element name="average-net">
                   <xsl:value-of select="$category0/frame/methodDuration/average-net - sum(//frame[@mn!=$category0/frame/@mn]/methodDuration/average-net)"/>
-               </xsl:element-->
-            </xsl:element>
+               </xsl:element>
+            </xsl:element-->
 		      
 		      <xsl:element name="other">
 		            <xsl:element name="{$hibernate}">
-		               <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/org.hibernate - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/org.hibernate)"/>
+		               <xsl:value-of select="$category0/frame/*/org.hibernate - sum(//frame[@mn!=$category0/frame/@mn]/*/org.hibernate)"/>
 		            </xsl:element>
 		            <xsl:element name="{$arjuna}">
-                     <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/com.arjuna - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/com.arjuna)"/>
+                     <xsl:value-of select="$category0/frame/*/com.arjuna - sum(//frame[@mn!=$category0/frame/@mn]/*/com.arjuna)"/>
                   </xsl:element>
                   <xsl:element name="{$caveat-emptor}">
-                     <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/auction - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/auction)"/>
+                     <xsl:value-of select="$category0/frame/*/auction - sum(//frame[@mn!=$category0/frame/@mn]/*/auction)"/>
                   </xsl:element>
                   <xsl:element name="{$jboss}">
-                     <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/org.jboss - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/org.jboss)"/>
+                     <xsl:value-of select="$category0/frame/*/org.jboss - sum(//frame[@mn!=$category0/frame/@mn]/*/org.jboss)"/>
                   </xsl:element>
                   <xsl:element name="{$log4j}">
-                     <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/org.apache.log4j - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/org.apache.log4j)"/>
+                     <xsl:value-of select="$category0/frame/*/org.apache.log4j - sum(//frame[@mn!=$category0/frame/@mn]/*/org.apache.log4j)"/>
                   </xsl:element>
                   <!-- Uses Ant to escape these package paths. -->
                   <xsl:choose>
                      <xsl:when test="'${db-vendor-package.xpath.A}' = '${db-vendor-package.xpath.B}'">
                         <!-- Both database vendors are the same  -->
                         <xsl:element name="${db-vendor-package.xpath.A}">
-		                     <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/${db-vendor-package.xpath.A} - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/${db-vendor-package.xpath.A})"/>
+		                     <xsl:value-of select="$category0/frame/*/${db-vendor-package.xpath.A} - sum(//frame[@mn!=$category0/frame/@mn]/*/${db-vendor-package.xpath.A})"/>
 		                  </xsl:element>
                      </xsl:when>
                      <xsl:otherwise>
                         <!-- Different database vendors -->
                         <xsl:element name="${db-vendor-package.xpath.A}">
-                           <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/${db-vendor-package.xpath.A} - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/${db-vendor-package.xpath.A})"/>
+                           <xsl:value-of select="$category0/frame/*/${db-vendor-package.xpath.A} - sum(//frame[@mn!=$category0/frame/@mn]/*/${db-vendor-package.xpath.A})"/>
                         </xsl:element>
                         <xsl:element name="${db-vendor-package.xpath.B}">
-                           <xsl:value-of select="$category0/frame/*[name()!='methodDuration']/${db-vendor-package.xpath.B} - sum(//frame[@mn!=$category0/frame/@mn]/*[name()!='methodDuration']/${db-vendor-package.xpath.B})"/>
+                           <xsl:value-of select="$category0/frame/*/${db-vendor-package.xpath.B} - sum(//frame[@mn!=$category0/frame/@mn]/*/${db-vendor-package.xpath.B})"/>
                         </xsl:element>
                      </xsl:otherwise>
                   </xsl:choose>

Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/analyseresults.xsl
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/analyseresults.xsl	2010-02-11 19:44:20 UTC (rev 31579)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/analyseresults.xsl	2010-02-11 20:09:33 UTC (rev 31580)
@@ -152,17 +152,17 @@
 	</xsl:template>
 
 	<xsl:template name="method-totals">
-		<xsl:element name="methodDuration">
+		<!--xsl:element name="methodDuration">
 			<xsl:element name="gross">
 				<xsl:value-of select="@t"></xsl:value-of>
 			</xsl:element>
-			<!-- xsl:variable name="netTime">
+			< xsl:variable name="netTime">
 				<xsl:value-of select="@t -sum(./child::*/@t)" />
 			</xsl:variable>
 			<xsl:element name="net">
 				<xsl:value-of select="$netTime" />
-			</xsl:element-->
-		</xsl:element>
+			</xsl:element>
+		</xsl:element-->
 	</xsl:template>
 
 	<xsl:template name="package-totals">

Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/average-results.xsl
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/average-results.xsl	2010-02-11 19:44:20 UTC (rev 31579)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/average-results.xsl	2010-02-11 20:09:33 UTC (rev 31580)
@@ -32,42 +32,45 @@
       <!-- context node: frame -->
          <xsl:element name="frame">
             <xsl:copy-of select="@mn"/>
-            <xsl:element name="methodDuration">
+            <xsl:attribute name="t">
+               <xsl:value-of select="round(@t div @count)"/>
+            </xsl:attribute>
+            <!-- xsl:element name="methodDuration">
                <xsl:element name="average-gross">
                   <xsl:value-of select="round(./methodDuration/gross div @count)"/>
                </xsl:element>
-               <!-- xsl:element name="average-net">
+               < xsl:element name="average-net">
                   <xsl:value-of select="round(./methodDuration/net div @count)"/>
-               </xsl:element-->
-            </xsl:element>
-            <xsl:element name="{name(./*[name()!='methodDuration'])}">
+               </xsl:element>
+            </xsl:element-->
+            <xsl:element name="{name(./*)}">
                <xsl:element name="{$hibernate}">
-                  <xsl:value-of select="round(./*[name()!='methodDuration']/org.hibernate div @count)"></xsl:value-of>
+                  <xsl:value-of select="round(./*/org.hibernate div @count)"></xsl:value-of>
                </xsl:element>
                <xsl:element name="{$arjuna}">
-                  <xsl:value-of select="round(./*[name()!='methodDuration']/com.arjuna div @count)"></xsl:value-of>
+                  <xsl:value-of select="round(./*/com.arjuna div @count)"></xsl:value-of>
                </xsl:element>
                <xsl:element name="{$caveat-emptor}">
-                  <xsl:value-of select="round(./*[name()!='methodDuration']/auction div @count)"></xsl:value-of>
+                  <xsl:value-of select="round(./*/auction div @count)"></xsl:value-of>
                </xsl:element>
                <xsl:element name="{$jboss}">
-                  <xsl:value-of select="round(./*[name()!='methodDuration']/org.jboss div @count)"></xsl:value-of>
+                  <xsl:value-of select="round(./*/org.jboss div @count)"></xsl:value-of>
                </xsl:element>
                <xsl:element name="{$log4j}">
-                  <xsl:value-of select="round(./*[name()!='methodDuration']/org.apache.log4j div @count)"></xsl:value-of>
+                  <xsl:value-of select="round(./*/org.apache.log4j div @count)"></xsl:value-of>
                </xsl:element>
                <xsl:choose>
                   <xsl:when test="'${db-vendor-package.xpath.A}' = '${db-vendor-package.xpath.B}'">
                      <xsl:element name="${db-vendor-package.xpath.A}">
-                        <xsl:value-of select="round(./*[name()!='methodDuration']/*[position()=last()] div @count)"/>
+                        <xsl:value-of select="round(./*/*[position()=last()] div @count)"/>
                      </xsl:element>
                   </xsl:when>
                   <xsl:otherwise>
                      <xsl:element name="${db-vendor-package.xpath.A}">
-                        <xsl:value-of select="round(./*[name()!='methodDuration']/${db-vendor-package.xpath.A} div @count)"/>
+                        <xsl:value-of select="round(./*/${db-vendor-package.xpath.A} div @count)"/>
                      </xsl:element>
                      <xsl:element name="${db-vendor-package.xpath.B}">
-                        <xsl:value-of select="round(./*[name()!='methodDuration']/${db-vendor-package.xpath.B} div @count)"/>
+                        <xsl:value-of select="round(./*/${db-vendor-package.xpath.B} div @count)"/>
                      </xsl:element>
                   </xsl:otherwise>
                </xsl:choose>

Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/merge-thread-results.xsl
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/merge-thread-results.xsl	2010-02-11 19:44:20 UTC (rev 31579)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/resources/xsl/merge-thread-results.xsl	2010-02-11 20:09:33 UTC (rev 31580)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- This stylesheet merges the results of multi-threaded calls. -->
+   <xsl:import href="csv-parser.xsl"/>
    <xsl:param name="hibernate">org.hibernate</xsl:param>
    <xsl:param name="arjuna">com.arjuna</xsl:param>
    <xsl:param name="caveat-emptor">auction</xsl:param>
@@ -8,6 +9,14 @@
    <xsl:param name="log4j">org.apache.log4j</xsl:param>
    <xsl:param name="db-vendor-package.A" />
    <xsl:param name="db-vendor-package.B" />
+   <xsl:param name="category-0-methods" />
+   <xsl:param name="category-B-methods" />
+   <xsl:param name="category-C-methods" />
+   <xsl:param name="category-D-methods" />
+   <xsl:key name="cat0-frame-method-name" match="/analysis/summary-analysis/category-0/frame" use="@mn" />
+   <xsl:key name="catB-frame-method-name" match="/analysis/summary-analysis/category-B/frame" use="@mn" />
+   <xsl:key name="catC-frame-method-name" match="/analysis/summary-analysis/category-C/frame" use="@mn" />
+   <xsl:key name="catD-frame-method-name" match="/analysis/summary-analysis/category-D/frame" use="@mn" />
 
    <xsl:template match="/">
       <xsl:apply-templates select="/*" />
@@ -19,99 +28,117 @@
    </xsl:template>
    <xsl:template match="summary-analysis">
       <xsl:copy>
-         <xsl:apply-templates select="category-0" />
+         <xsl:apply-templates select="category-0">
+            <xsl:with-param name="csv" select="$category-0-methods"/>
+            <xsl:with-param name="key-name">cat0-frame-method-name</xsl:with-param>
+         </xsl:apply-templates>
          <xsl:copy-of select="./category-A" />
-         <xsl:apply-templates select="category-B" />
-         <xsl:apply-templates select="category-C" />
-         <xsl:apply-templates select="category-D" />
+         <xsl:apply-templates select="category-B">
+            <xsl:with-param name="csv" select="$category-B-methods"/>
+            <xsl:with-param name="key-name">catB-frame-method-name</xsl:with-param>
+         </xsl:apply-templates>
+         <xsl:apply-templates select="category-C">
+            <xsl:with-param name="csv" select="$category-C-methods"/>
+            <xsl:with-param name="key-name">catC-frame-method-name</xsl:with-param>
+         </xsl:apply-templates>
+         <xsl:apply-templates select="category-D">
+            <xsl:with-param name="csv" select="$category-D-methods"/>
+            <xsl:with-param name="key-name">catD-frame-method-name</xsl:with-param>
+         </xsl:apply-templates>
+         
       </xsl:copy>
 
    </xsl:template>
 
    <xsl:template match="category-0|category-B|category-C|category-D">
+      <xsl:param name="csv"/>
+      <xsl:param name="key-name"/>
       <!--
          Context node: /analysis/summary-analysis/category-0 or category-B or
          category-C or category-D
       -->
+      <!-- xsl:copy>
+         <xsl:apply-templates select="frame"/>
+      </xsl:copy-->
+      
       <xsl:copy>
-         <xsl:apply-templates select="frame"/>
+         <xsl:call-template name="parse-csv">
+            <xsl:with-param name="csv" select="$csv"/>
+            <xsl:with-param name="key-name" select="$key-name"/>
+         </xsl:call-template>
       </xsl:copy>
    </xsl:template>
-
-   <xsl:template match="frame">
-      <!-- Context node: /analysis/summary-analysis/*/frame -->
-      <!-- Need to reduce the number of frame nodes that have the same method name @mn
-      attribute. -->
-      <xsl:variable name="methodName" select="./@mn"/>
+   
+   <xsl:template name="callback">
+      <xsl:param name="variable"/>
+      <xsl:param name="key-name"/>
       
-      <xsl:if test="0 = count(preceding::frame[@mn=$methodName])">
-         <!-- Use the first node with a distinct @mn attribute value.
-         Want to merge multiple source tree 'frame's with identical @mn to one
-         in result tree. -->
-            <xsl:element name="frame">
-               <xsl:attribute name="mn">
-                     <xsl:value-of select="@mn" />
-                  </xsl:attribute>
-               <xsl:attribute name="count">
-                     <!-- Assuming the reduction of counts is valid because each
-                     thread will be following a deterministic path. The @c count
-                     will be identical for each thread. -->
-                  <xsl:value-of select="count(../frame[@mn=$methodName]) * @c" />
-               </xsl:attribute>
-               <xsl:element name="methodDuration">
-                  <xsl:element name="gross">
-                     <xsl:value-of select="sum(../frame[@mn=$methodName]/methodDuration/gross) " />
-                  </xsl:element>
-                  <!-- xsl:element name="net">
-                     <xsl:value-of select="sum(../frame[@mn=$methodName]/methodDuration/net) " />
-                  </xsl:element-->
-               </xsl:element>
-
-               <xsl:element name="{name(./*['methodDuration' != name()])}">
-                  <xsl:element name="{$hibernate}">
+      <xsl:element name="frame">
+         <xsl:attribute name="mn">
+            <xsl:value-of select="$variable" />
+         </xsl:attribute>
+         <xsl:attribute name="count">
+               <!-- Assuming the reduction of counts is valid because each
+               thread will be following a deterministic path. The @c count
+               will be identical for each thread. -->
+            <xsl:value-of select="count(key($key-name, $variable))" />
+         </xsl:attribute>
+         <xsl:attribute name="t">
+            <xsl:value-of select="sum(key($key-name, $variable)/@t)"/>
+         </xsl:attribute>
+         <!-- xsl:element name="methodDuration">
+            <xsl:element name="gross">
+               <xsl:value-of select="sum(key($key-name, $variable)/methodDuration/gross) " />
+            </xsl:element>
+         </xsl:element-->
+   
+         <xsl:element name="{translate($variable, ':', '.')}">
+         
+            <xsl:element name="{$hibernate}">
+               <xsl:value-of
+                  select="sum(key($key-name, $variable)/*/org.hibernate) " />
+            </xsl:element>
+            <xsl:element name="{$arjuna}">
+               <xsl:value-of
+                  select="sum(key($key-name, $variable)/*/com.arjuna) " />
+            </xsl:element>
+            <xsl:element name="{$caveat-emptor}">
+               <xsl:value-of
+                  select="sum(key($key-name, $variable)/*/auction) " />
+            </xsl:element>
+            <xsl:element name="{$jboss}">
+               <xsl:value-of
+                  select="sum(key($key-name, $variable)/*/org.jboss) " />
+            </xsl:element>
+            <xsl:element name="{$log4j}">
+               <xsl:value-of
+                  select="sum(key($key-name, $variable)/*/org.apache.log4j) " />
+            </xsl:element>
+            <xsl:choose>
+               <xsl:when
+                  test="'${db-vendor-package.xpath.A}' = '${db-vendor-package.xpath.B}'">
+                  <xsl:element name="${db-vendor-package.xpath.A}">
                      <xsl:value-of
-                        select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/org.hibernate) " />
+                        select="sum(key($key-name, $variable)/*/${db-vendor-package.xpath.A} ) " />
                   </xsl:element>
-                  <xsl:element name="{$arjuna}">
+               </xsl:when>
+               <xsl:otherwise>
+                  <xsl:element name="${db-vendor-package.xpath.A}">
                      <xsl:value-of
-                        select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/com.arjuna) " />
+                        select="sum(key($key-name, $variable)/*/${db-vendor-package.xpath.A} ) " />
                   </xsl:element>
-                  <xsl:element name="{$caveat-emptor}">
+                  <xsl:element name="${db-vendor-package.xpath.B}">
                      <xsl:value-of
-                        select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/auction) " />
+                        select="sum(key($key-name, $variable)/*/${db-vendor-package.xpath.B} ) " />
                   </xsl:element>
-                  <xsl:element name="{$jboss}">
-                     <xsl:value-of
-                        select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/org.jboss) " />
-                  </xsl:element>
-                  <xsl:element name="{$log4j}">
-                     <xsl:value-of
-                        select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/org.apache.log4j) " />
-                  </xsl:element>
-                  <xsl:choose>
-                     <xsl:when
-                        test="'${db-vendor-package.xpath.A}' = '${db-vendor-package.xpath.B}'">
-                        <xsl:element name="${db-vendor-package.xpath.A}">
-                           <xsl:value-of
-                              select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/${db-vendor-package.xpath.A} ) " />
-                        </xsl:element>
-                     </xsl:when>
-                     <xsl:otherwise>
-                        <xsl:element name="${db-vendor-package.xpath.A}">
-                           <xsl:value-of
-                              select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/${db-vendor-package.xpath.A} ) " />
-                        </xsl:element>
-                        <xsl:element name="${db-vendor-package.xpath.B}">
-                           <xsl:value-of
-                              select="sum(../frame[@mn=$methodName]/*['methodDuration' != name()]/${db-vendor-package.xpath.B} ) " />
-                        </xsl:element>
-                     </xsl:otherwise>
-                  </xsl:choose>
-               </xsl:element>
-            </xsl:element>
-      </xsl:if>
-      
-      
+               </xsl:otherwise>
+            </xsl:choose>
+         </xsl:element>
+      </xsl:element>
    </xsl:template>
+   
+   
 
+   
+
 </xsl:stylesheet>
\ No newline at end of file



More information about the jboss-svn-commits mailing list