| [comment encoding = UTF-8 /] |
| [comment /******************************************************************************* |
| * Copyright (c) 2012 INRIA. All rights reserved. This program and the |
| * accompanying materials are made available under the terms of the Eclipse |
| * Public License v1.0 which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: Guillaume Doux - INRIA - Initial API and implementation |
| * |
| ******************************************************************************/ /] |
| [module HtmlReport('http://www.eclipse.org/modisco/infra/discovery/0.1.incubation/benchmark','http://www.eclipse.org/MoDisco/Discovery/0.1.incubation/discovery/catalog','http://www.eclipse.org/MoDisco/Discovery/0.1.incubation/discovery/launch')/] |
| |
| [query public maxExecutionTime (iterations : Set(DiscoveryIteration)) : Real = invoke('org.eclipse.modisco.infra.discovery.benchmark.reporting.internal.ReportingUtilities', 'maxExecutionTime(java.util.Collection)', Sequence{iterations})/] |
| [query public maxSaveTime (iterations : Set(DiscoveryIteration)) : Real = invoke('org.eclipse.modisco.infra.discovery.benchmark.reporting.internal.ReportingUtilities', 'maxSaveTime(java.util.Collection)', Sequence{iterations})/] |
| [query public sizeWithUnit (value : Real) : String = invoke('org.eclipse.modisco.infra.discovery.benchmark.reporting.internal.ReportingUtilities', 'sizeWithUnit(java.lang.Double)', Sequence{value})/] |
| [query public timeWithUnit (value : Real) : String = invoke('org.eclipse.modisco.infra.discovery.benchmark.reporting.internal.ReportingUtilities', 'timeWithUnit(java.lang.Double)', Sequence{value})/] |
| |
| [template public HtmlReport(b : Benchmark)] |
| |
| [comment @main /] |
| [file ('discoveryReport.html', false, 'UTF-8')] |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| |
| <style type="text/css"> |
| .graph { |
| background-color: #E0E0E0; |
| border: solid 1px black; |
| } |
| .graph td { |
| font-family: verdana, arial, sans serif; |
| } |
| .bar { |
| background-color: white; |
| text-align: right; |
| border: solid 1px black; |
| width: 400px; |
| } |
| .bar div { |
| background-color: #A0A0FF; |
| text-align: right; |
| float: left; |
| height: 20px; |
| } |
| body { |
| background-color: white; |
| } |
| td { |
| text-align: center; |
| } |
| </style> |
| |
| <title>MoDisco Java Discover Benchmark</title> |
| </head> |
| |
| <body> |
| |
| |
| |
| <h2>System Information</h2> |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <th>OS name</th> |
| <td>[b.osName/]</td> |
| </tr> |
| |
| <tr> |
| <th>OS version</th> |
| <td>[b.osVersion/]</td> |
| </tr> |
| |
| <tr> |
| <th>OS architecture</th> |
| <td>[b.osArchitecture/]</td> |
| </tr> |
| |
| <tr> |
| <th>Number of processor cores</th> |
| <td>[b.processorCount/]</td> |
| </tr> |
| |
| <tr> |
| <th>Processor name</th> |
| <td>[b.processorName/]</td> |
| </tr> |
| |
| <tr> |
| <th>Processor description</th> |
| <td>[b.processorDescription/]</td> |
| </tr> |
| |
| <tr> |
| <th>Processor cache size</th> |
| <td>[b.processorCacheSize/]</td> |
| </tr> |
| |
| <tr> |
| <th>System memory</th> |
| <td>[b.systemMemory/]</td> |
| </tr> |
| </table> |
| |
| |
| <h2>Execution time by project size</h2> |
| |
| <img src="DiscoveryTimeByProjectSizeOverall.png"/> |
| |
| |
| [if (b.discoveries->first().iterations->first().maxUsedMemoryInBytes<>0)] |
| <h2>Memory use time by project size</h2> |
| |
| <img src="memoryByProjectSizeOverall.png"/> |
| |
| [/if] |
| |
| |
| <h2>Results Overview</h2> |
| |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <th>Project</th> |
| <th>Discoverer</th> |
| <th>Average discovery time</th> |
| <th>Average save time</th> |
| <th>Number of model elements</th> |
| <th>Total size</th> |
| <th>Average file size</th> |
| <th>Total lines</th> |
| <th>Average lines per file</th> |
| <th>XMI size</th> |
| </tr> |
| [for (discovery : Discovery | b.discoveries) ] |
| <tr> |
| <td><a href="Report/[discovery.project.name/].html">[discovery.project.name/]</a></td> |
| <td><a href="Report/[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a></td> |
| <td>[timeWithUnit(0.0 + discovery.discoveryTimeAverageInSeconds)/] (σ = [timeWithUnit(0.0 + discovery.executionTimeStandardDeviation)/]s)</td> |
| <td>[timeWithUnit(0.0 + discovery.saveTimeAverageInSeconds)/] (σ = [timeWithUnit(0.0 + discovery.saveTimeStandardDeviation)/]s)</td> |
| <td>[discovery.numberOfModelElements/]</td> |
| <td>[sizeWithUnit(0.0 + discovery.project.oclAsType(Project).totalSizeInBytes)/]</td> |
| <td>[sizeWithUnit(0.0 + discovery.project.oclAsType(Project).averageFileSizeInBytes)/]</td> |
| <td>[discovery.project.oclAsType(Project).totalLines/]</td> |
| <td>[discovery.project.oclAsType(Project).averageLinesPerFile/]</td> |
| <td>[sizeWithUnit(0.0 +discovery.xmiSizeInBytes)/]</td> |
| </tr> |
| [/for] |
| </table> |
| |
| [if (b.discoveries->first().iterations->size() > 1)] |
| <h2>Execution times per iteration</h2> |
| |
| [for (discovery : Discovery | b.discoveries) ] |
| <h3>[discovery.project.name/] with <a href="Report/[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a></h3> |
| [let maxExecutionTime : Real = maxExecutionTime(discovery.iterations)] |
| |
| <table width="600" class="graph" cellspacing="6" cellpadding="0"> |
| <tr> |
| <th>iteration</th><th>relative execution time</th><th>time</th> |
| </tr> |
| |
| [for (discoveryIteration : DiscoveryIteration | discovery.iterations)] |
| <tr> |
| <td>[i/]/[discovery.iterations->size()/]</td><td class="bar"><div style="width: [discoveryIteration.discoveryTimeInSeconds / maxExecutionTime * 100.0/]%"></div></td><td>[timeWithUnit(0.0 + discoveryIteration.discoveryTimeInSeconds)/]</td> |
| </tr> |
| [/for] |
| </table> |
| |
| [/let] |
| [/for] |
| |
| <h2>Save times per iteration</h2> |
| |
| [for (discovery : Discovery | b.discoveries) ] |
| <h3>[discovery.project.name/] with <a href="Report/[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a></h3> |
| [let maxSaveTime : Real = maxSaveTime(discovery.iterations)] |
| |
| <table width="600" class="graph" cellspacing="6" cellpadding="0"> |
| <tr> |
| <th>iteration</th><th>relative save time</th><th>time(s)</th> |
| </tr> |
| |
| [for (discoveryIteration : DiscoveryIteration | discovery.iterations)] |
| <tr> |
| <td>[i/]/[discovery.iterations->size()/]</td><td class="bar"><div style="width: [discoveryIteration.saveTimeInSeconds / maxSaveTime * 100.0/]%"></div></td><td>[timeWithUnit(0.0 + discoveryIteration.saveTimeInSeconds)/]</td> |
| </tr> |
| [/for] |
| </table> |
| |
| [/let] |
| [/for] |
| |
| |
| [/if] |
| |
| <p/> |
| <hr/> |
| <font size="-1"><i>This report has been generated with <a href="http://www.eclipse.org/MoDisco/">MoDisco</a> Java Discoverer Benchmark.</i></font> |
| </body></html> |
| [/file] |
| |
| |
| |
| [for (discovery : Discovery | b.discoveries) ] |
| [file ('Report/'+discovery.discovererId+discovery.project.name+'.html', false, 'UTF-8')] |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| |
| <style type="text/css"> |
| .graph { |
| background-color: #E0E0E0; |
| border: solid 1px black; |
| } |
| .graph td { |
| font-family: verdana, arial, sans serif; |
| } |
| .bar { |
| background-color: white; |
| text-align: right; |
| border: solid 1px black; |
| width: 400px; |
| } |
| .bar div { |
| background-color: #A0A0FF; |
| text-align: right; |
| float: left; |
| height: 20px; |
| } |
| body { |
| background-color: white; |
| } |
| td { |
| text-align: center; |
| } |
| </style> |
| |
| <title>[discovery.name/]</title> |
| </head> |
| |
| <body> |
| |
| <h1>[discovery.name/]</h1> |
| <h2>General discovery information</h2> |
| <b>name</b>: [discovery.name/]<br/> |
| <b>discoverer</b>: [discovery.discovererId/] ([discovery.discovererClassName/])<br/> |
| <b>average discovery time in seconds</b>: [timeWithUnit(0.0 + discovery.discoveryTimeAverageInSeconds)/]<br/> |
| <b>average save time in seconds</b>: [timeWithUnit(0.0 + discovery.saveTimeAverageInSeconds)/]<br/> |
| <b>execution time standard deviation</b>: [timeWithUnit(0.0 + discovery.executionTimeStandardDeviation)/]<br/> |
| <b>save time standard deviation</b>: [timeWithUnit(0.0 + discovery.saveTimeStandardDeviation)/]<br/> |
| <b>number of model elements</b>: [discovery.numberOfModelElements/]<br/> |
| <b>size of the xmi file in bytes</b>: [sizeWithUnit(0.0 + discovery.xmiSizeInBytes)/]<br/> |
| |
| <h3>Project information</h3> |
| <b>Project name</b>: <a href="[discovery.project.name/].html">[discovery.project.name/]</a><br/> |
| <b>total number of lines</b>: [discovery.project.oclAsType(Project).totalLines/]<br/> |
| <b>average number of lines per files</b>: [discovery.project.oclAsType(Project).averageLinesPerFile/]<br/> |
| <b>average file size in bytes</b>: [sizeWithUnit(0.0 + discovery.project.oclAsType(Project).averageFileSizeInBytes)/]<br/> |
| <b>total size in bytes</b>: [sizeWithUnit(0.0 + discovery.project.totalSizeInBytes)/]<br/> |
| |
| <img src="../DiscoveryTimeByProjectSize[discovery.discovererId/].png"/> |
| [if (discovery.iterations->first().maxUsedMemoryInBytes<>0)] |
| <img src="../memoryByProjectSize[discovery.discovererId/].png"/> |
| [/if] |
| |
| [if (discovery.iterations->size() > 1)] |
| [for (iteration : DiscoveryIteration | discovery.iterations) separator ('<hr/>')] |
| <h2>iteration [i/]</h2> |
| <b>date</b>: [iteration.discoveryDate/]<br/> |
| <b>save time</b>: [timeWithUnit(0.0 + iteration.saveTimeInSeconds)/]<br/> |
| <b>discovery time</b>: [timeWithUnit(0.0 + iteration.discoveryTimeInSeconds)/]<br/> |
| <b>max used memory</b>: [sizeWithUnit(0.0 + iteration.maxUsedMemoryInBytes)/]<br/> |
| |
| [if (discovery.iterations->first().maxUsedMemoryInBytes<>0)] |
| <img src="../memoryByTime[discovery.discovererId/]_[iteration.discoveryDate.toString().replaceAll(' ', '_').replaceAll(':', '-')/].png"/> |
| [/if] |
| |
| [if (not iteration.discoveryErrors.oclIsUndefined())] |
| <font color="red"> |
| <h3>discovery errors</h3> |
| [for (error : String | iteration.discoveryErrors) ] |
| [error/]<br/> |
| </font> |
| [/for] |
| [/if] |
| [/for] |
| [/if] |
| |
| |
| |
| |
| <p/> |
| <hr/> |
| <font size="-1"><i>This report has been generated with <a href="http://www.eclipse.org/MoDisco/">MoDisco</a> Java Discoverer Benchmark.</i></font> |
| </body></html> |
| [/file] |
| [/for] |
| |
| |
| [for (project : Resource | b.projects) ] |
| [file ('Report/'+project.name+'.html', false, 'UTF-8')] |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| |
| <style type="text/css"> |
| .graph { |
| background-color: #E0E0E0; |
| border: solid 1px black; |
| } |
| .graph td { |
| font-family: verdana, arial, sans serif; |
| } |
| .bar { |
| background-color: white; |
| text-align: right; |
| border: solid 1px black; |
| width: 400px; |
| } |
| .bar div { |
| background-color: #A0A0FF; |
| text-align: right; |
| float: left; |
| height: 20px; |
| } |
| body { |
| background-color: white; |
| } |
| td { |
| text-align: center; |
| } |
| </style> |
| |
| <title>[project.oclAsType(Project).name/]</title> |
| </head> |
| |
| <body> |
| |
| <h1>[project.oclAsType(Project).name/]</h1> |
| |
| <h2>Project information</h2> |
| <b>Project name</b>: <a href="Report/[project.oclAsType(Project).name/].html">[project.oclAsType(Project).name/]</a><br/> |
| <b>total number of lines</b>: [project.oclAsType(Project).totalLines/]<br/> |
| <b>average number of lines per files</b>: [project.oclAsType(Project).averageLinesPerFile/]<br/> |
| <b>average file size in bytes</b>: [sizeWithUnit(0.0 + project.oclAsType(Project).averageFileSizeInBytes)/]<br/> |
| <b>total size in bytes</b>: [sizeWithUnit(0.0 + project.totalSizeInBytes)/]<br/> |
| |
| <h2>Discoveries on the project</h2> |
| |
| <h3>Results Overview</h3> |
| |
| <table border="1" cellpadding="2" cellspacing="0"> |
| <tr> |
| <th>Project</th> |
| <th>Discoverer</th> |
| <th>Average discovery time</th> |
| <th>Average save time</th> |
| <th>Number of model elements</th> |
| <th>Total size</th> |
| <th>Average file size</th> |
| <th>Total lines</th> |
| <th>Average lines per file</th> |
| <th>XMI size</th> |
| </tr> |
| |
| [for (discovery : Discovery | b.discoveries)] |
| [if (discovery.project=project)] |
| <tr> |
| <td><a href="[discovery.project.name/].html">[discovery.project.name/]</a></td> |
| <td><a href="[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a></td> |
| <td>[timeWithUnit(0.0 + discovery.discoveryTimeAverageInSeconds)/] (σ = [timeWithUnit(0.0 + discovery.executionTimeStandardDeviation)/]s)</td> |
| <td>[timeWithUnit(0.0 + discovery.saveTimeAverageInSeconds)/] (σ = [timeWithUnit(0.0 + discovery.saveTimeStandardDeviation)/]s)</td> |
| <td>[discovery.numberOfModelElements/]</td> |
| <td>[sizeWithUnit(0.0 + discovery.project.oclAsType(Project).totalSizeInBytes)/]</td> |
| <td>[sizeWithUnit(0.0 + discovery.project.oclAsType(Project).averageFileSizeInBytes)/]</td> |
| <td>[discovery.project.oclAsType(Project).totalLines/]</td> |
| <td>[discovery.project.oclAsType(Project).averageLinesPerFile/]</td> |
| <td>[sizeWithUnit(0.0 +discovery.xmiSizeInBytes)/]</td> |
| </tr> |
| [/if] |
| [/for] |
| </table> |
| |
| <h3>Detailed Information</h3> |
| |
| [for (discovery : Discovery | b.discoveries)] |
| [if (discovery.project=project)] |
| [if (discovery.iterations->size() > 1)] |
| <h4>Execution times per iteration</h4> |
| |
| <h5><a href="[discovery.project.name/].html">[discovery.project.name/]</a> with <a href="[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a></h5> |
| [let maxExecutionTime : Real = maxExecutionTime(discovery.iterations)] |
| |
| <table width="600" class="graph" cellspacing="6" cellpadding="0"> |
| <tr> |
| <th>iteration</th><th>relative execution time</th><th>time</th> |
| </tr> |
| |
| [for (discoveryIteration : DiscoveryIteration | discovery.iterations)] |
| <tr> |
| <td>[i/]/[discovery.iterations->size()/]</td><td class="bar"><div style="width: [discoveryIteration.discoveryTimeInSeconds / maxExecutionTime * 100.0/]%"></div></td><td>[timeWithUnit(0.0 + discoveryIteration.discoveryTimeInSeconds)/]</td> |
| </tr> |
| [/for] |
| </table> |
| |
| [/let] |
| [/if] |
| [/if] |
| [/for] |
| |
| |
| [for (discovery : Discovery | b.discoveries)] |
| [if (discovery.project=project)] |
| [if (discovery.iterations->size() > 1)] |
| <h4>Save times per iteration</h4> |
| |
| <h5><a href="[discovery.project.name/].html">[discovery.project.name/]</a> with <a href="[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a></h5> |
| [let maxSaveTime : Real = maxSaveTime(discovery.iterations)] |
| |
| <table width="600" class="graph" cellspacing="6" cellpadding="0"> |
| <tr> |
| <th>iteration</th><th>relative save time</th><th>time(s)</th> |
| </tr> |
| |
| [for (discoveryIteration : DiscoveryIteration | discovery.iterations)] |
| <tr> |
| <td>[i/]/[discovery.iterations->size()/]</td><td class="bar"><div style="width: [discoveryIteration.saveTimeInSeconds / maxSaveTime * 100.0/]%"></div></td><td>[timeWithUnit(0.0 + discoveryIteration.saveTimeInSeconds)/]</td> |
| </tr> |
| [/for] |
| </table> |
| |
| [/let] |
| [/if] |
| [/if] |
| [/for] |
| |
| [for (discovery : Discovery | b.discoveries)] |
| [if (discovery.project=project)] |
| [for (iteration : DiscoveryIteration | discovery.iterations)] |
| [if (not iteration.discoveryErrors.oclIsUndefined())] |
| <font color="red"> |
| <h2>discovery errors for <a href="[discovery.discovererId+discovery.project.name/].html">[discovery.discovererId/]</a> on <a href="[discovery.project.name/].html">[discovery.project.name/]</a>:</h2> |
| [for (error : String | iteration.discoveryErrors) ] |
| [error/]<br/> |
| </font> |
| [/for] |
| [/if] |
| [/for] |
| [/if] |
| [/for] |
| |
| <p/> |
| <hr/> |
| <font size="-1"><i>This report has been generated with <a href="http://www.eclipse.org/MoDisco/">MoDisco</a> Java Discoverer Benchmark.</i></font> |
| </body></html> |
| [/file] |
| [/for] |
| |
| [/template] |