1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/tools/performance/layout/Averagetable2.pl Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,487 @@ 1.4 +########################################################################################## 1.5 +# 1.6 +# This Source Code Form is subject to the terms of the Mozilla Public 1.7 +# License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 +# file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.9 + 1.10 +#------------------------------------------------------------------------------ 1.11 +sub debug_print { 1.12 + foreach $str (@_){ 1.13 +# print( $str ); 1.14 + } 1.15 +} 1.16 +#------------------------------------------------------------------------------ 1.17 +# get the arguments: 1.18 +#------------------------------------------------------------------------------ 1.19 +@ARGV; 1.20 +$UrlName = $ARGV[0]; 1.21 +$logFile = $ARGV[1]; 1.22 +$NumOfSites = $ARGV[2]; 1.23 +$buildRoot = $ARGV[3]; 1.24 +$LinkURL = $ARGV[4]; 1.25 +$useClockTime = $ARGV[5]; 1.26 +#$buildIDFile = '< '.$buildRoot.'\bin\chrome\locales\en-US\navigator\locale\navigator.dtd'; 1.27 +#$buildIDFile = ""; 1.28 +debug_print( "Arguments:[ $UrlName | $logFile | $NumOfSites | $buildRoot | $LinkURL | $useClockTime]\n"); 1.29 + 1.30 +#------------------------------------------------------------------------------ 1.31 +# Open the ID file and get the build ID 1.32 +#------------------------------------------------------------------------------ 1.33 + 1.34 +#open (XUL_FILE, $buildIDFile) or die "Cannot open BuildID file $buildIDFile (AverageTable2.pl)\n"; 1.35 +#$BuildNo = ""; 1.36 +#$LineList; 1.37 +#while (<XUL_FILE>) 1.38 +#{ 1.39 +# $ThisLine = $_; 1.40 +# chop ($ThisLine); 1.41 +# if (/Build ID/){ 1.42 +# @LineList = split (/\"/, $ThisLine); 1.43 +# $BuildNo = $LineList[1]; 1.44 +# } 1.45 +#} 1.46 +#@LineList = split (/ /, $BuildNo); 1.47 +#$BuildNo = $LineList[2]; 1.48 +#$BuildNo =~ s/"//g; 1.49 +#$BuildNo =~ s/[>]//g; 1.50 +#debug_print ("Build Number: $BuildNo\n"); 1.51 +#close( XUL_FILE ); 1.52 + 1.53 +#------------------------------------------------------------------------------ 1.54 +# Open the logfile (input) 1.55 +# and the deviation file (output,append) 1.56 +#------------------------------------------------------------------------------ 1.57 +open (LOG_FILE, "< $logFile") or die "Logfile $logFile could not be opened"; 1.58 + 1.59 +#------------------------------------------------------------------------------ 1.60 +# Deviation file: 1.61 +# Flat file used to calculate and display deviation between latest and 1.62 +# week old builds data. 1.63 +# 1.64 +# Format of flat file is attributes separated by commas with no spaces as follows: 1.65 +# BuildNo,date,url,parsingtime,parsingper,contenttime,contentper,frametime, 1.66 +# frameper,styletime,styleper,reflowtime,reflowper,totallayouttime,totallayoutper, 1.67 +# totalpageloadtime 1.68 +($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime (time); 1.69 +$RealMonth = $Month + 1; 1.70 +$Year += 1900; 1.71 +$BuildNo = $RealMonth.$DayOfMonth.$Year; 1.72 +$file = $BuildNo.".dat"; 1.73 +open (DEVIATION, ">> $file") or die "Deviation file could not be opened"; 1.74 + 1.75 +# add entry to the deviation file 1.76 +($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime (time); 1.77 +$RealMonth = $Month + 1; 1.78 +$Year += 1900; 1.79 +$date2 = $RealMonth.$DayOfMonth.$Year; 1.80 +print (DEVIATION "$BuildNo,$date2,$UrlName,"); 1.81 + 1.82 +#------------------------------------------------------------------------------ 1.83 +# local variables 1.84 +#------------------------------------------------------------------------------ 1.85 +@List; 1.86 +$Content_Time = 0; 1.87 +$Reflow_Time = 0; 1.88 +$FrameAndStyle_Time = 0; 1.89 +$Frame_Time = 0; 1.90 +$Style_Time = 0; 1.91 +$Parse_Time = 0; 1.92 +$TotalPageLoad_Time = 0; 1.93 +$TotalLayout_Time = 0; 1.94 +$Avg_Content_Time = 0; 1.95 +$Avg_Reflow_Time = 0; 1.96 +$Avg_FrameAndStyle_Time = 0; 1.97 +$Avg_Frame_Time = 0; 1.98 +$Avg_Style_Time = 0; 1.99 +$Avg_Parse_Time = 0; 1.100 +$Avg_TotalPageLoad_Time = 0; 1.101 +$Avg_TotalLayout_Time = 0; 1.102 +$Content_Time_Percentage = 0; 1.103 +$Reflow_Time_Percentage = 0; 1.104 +$FrameAndStyle_Time_Percentage = 0; 1.105 +$Frame_Time_Percentage = 0; 1.106 +$Style_Time_Percentage = 0; 1.107 +$Parse_Time_Percentage = 0; 1.108 +$TotalLayout_Time_Percentage = 0; 1.109 +$Avg_Content_Time_Percentage = 0; 1.110 +$Avg_Reflow_Time_Percentage = 0; 1.111 +$Avg_FrameAndStyle_Time_Percentage = 0; 1.112 +$Avg_Frame_Time_Percentage = 0; 1.113 +$Avg_Style_Time_Percentage = 0; 1.114 +$Avg_Parse_Time_Percentage = 0; 1.115 +$Avg_TotalLayout_Time_Percentage = 0; 1.116 +$Num_Entries = 0; 1.117 +$valid = 0; 1.118 +# $WebShell; 1.119 +$temp; 1.120 +$url; 1.121 +$Content_Flag = 0; 1.122 +$Reflow_Flag = 0; 1.123 +$Style_Flag = 0; 1.124 +$Parse_Flag = 0; 1.125 + 1.126 +#------------------------------------------------------------------------------ 1.127 +# Management of averages via average.txt file 1.128 +# NOTE: the averag.txt file is used to accumulate all performance times 1.129 +# and keep track of the number of entries. When completed, the footer.pl 1.130 +# script does the averaging by dividing the accumulated times by the 1.131 +# number of entries 1.132 +#------------------------------------------------------------------------------ 1.133 + 1.134 +# if first site, delete any old Average file (in case the caller did not) 1.135 +# 1.136 +if ( $NumOfSites == 1 ){ 1.137 + unlink( "Average.txt" ); 1.138 + debug_print( "Deleting file Average.txt\n" ); 1.139 +} 1.140 +# load the averages data so we can accumulate it 1.141 +# 1.142 +if ( -r "Average.txt" ) { 1.143 + open (AVERAGE, "< Average.txt"); 1.144 + while( <AVERAGE> ){ 1.145 + $ThisLine = $_; 1.146 + chop ($ThisLine); 1.147 + 1.148 + if( /Num Entries:/ ){ 1.149 + @list = split( / /, $ThisLine ); 1.150 + $Num_Entries = $list[2]; 1.151 + debug_print( "Num Entries: $Num_Entries\n" ); 1.152 + } 1.153 + if( /Avg Parse:/ ){ 1.154 + @list = split( / /, $ThisLine ); 1.155 + $Avg_Parse_Time = $list[2]; 1.156 + debug_print( "Avg Parse: $Avg_Parse_Time\n" ); 1.157 + } 1.158 + if( /Per Parse:/ ){ 1.159 + @list = split( / /, $ThisLine ); 1.160 + $Avg_Parse_Time_Percentage = $list[2]; 1.161 + debug_print( "Per Parse: $Avg_Parse_Time_Percentage\n" ); 1.162 + } 1.163 + if( /Avg Content:/ ){ 1.164 + @list = split( / /, $ThisLine ); 1.165 + $Avg_Content_Time = $list[2]; 1.166 + debug_print( "Avg Content: $Avg_Content_Time\n" ); 1.167 + } 1.168 + if( /Per Content:/ ){ 1.169 + @list = split( / /, $ThisLine ); 1.170 + $Avg_Content_Time_Percentage = $list[2]; 1.171 + debug_print( "Per Content: $Avg_Content_Time_Percentage\n" ); 1.172 + } 1.173 + if( /Avg Frame:/ ){ 1.174 + @list = split( / /, $ThisLine ); 1.175 + $Avg_Frame_Time = $list[2]; 1.176 + debug_print( "Avg Frame: $Avg_Frame_Time\n" ); 1.177 + } 1.178 + if( /Per Frame:/ ){ 1.179 + @list = split( / /, $ThisLine ); 1.180 + $Avg_Frame_Time_Percentage = $list[2]; 1.181 + debug_print( "Per Frame: $Avg_Frame_Time_Percentage\n" ); 1.182 + } 1.183 + if( /Avg Style:/ ){ 1.184 + @list = split( / /, $ThisLine ); 1.185 + $Avg_Style_Time = $list[2]; 1.186 + debug_print( "Avg Style: $Avg_Style_Time\n" ); 1.187 + } 1.188 + if( /Per Style:/ ){ 1.189 + @list = split( / /, $ThisLine ); 1.190 + $Avg_Style_Time_Percentage = $list[2]; 1.191 + debug_print( "Per Style: $Avg_Style_Time_Percentage\n" ); 1.192 + } 1.193 + if( /Avg Reflow:/ ){ 1.194 + @list = split( / /, $ThisLine ); 1.195 + $Avg_Reflow_Time = $list[2]; 1.196 + debug_print( "Avg Reflow: $Avg_Reflow_Time\n" ); 1.197 + } 1.198 + if( /Per Reflow:/ ){ 1.199 + @list = split( / /, $ThisLine ); 1.200 + $Avg_Reflow_Time_Percentage = $list[2]; 1.201 + debug_print( "Per Reflow: $Avg_Reflow_Time_Percentage\n" ); 1.202 + } 1.203 + if( /Avg TotalLayout:/ ){ 1.204 + @list = split( / /, $ThisLine ); 1.205 + $Avg_TotalLayout_Time = $list[2]; 1.206 + debug_print( "Avg TotalLayout: $Avg_TotalLayout_Time\n" ); 1.207 + } 1.208 + if( /Per Layout:/ ){ 1.209 + @list = split( / /, $ThisLine ); 1.210 + $Avg_TotalLayout_Time_Percentage = $list[2]; 1.211 + debug_print( "Per Layout: $Avg_TotalLayout_Time_Percentage\n" ); 1.212 + } 1.213 + if( /Avg PageLoad:/ ){ 1.214 + @list = split( / /, $ThisLine ); 1.215 + $Avg_TotalPageLoad_Time = $list[2]; 1.216 + debug_print( "Avg PageLoad: $Avg_TotalPageLoad_Time\n" ); 1.217 + } 1.218 + } 1.219 + print (AVERAGE "Avg PageLoad: $Avg_TotalPageLoad_Time\n"); 1.220 + close (AVERAGE); 1.221 +} 1.222 + 1.223 +#------------------------------------------------------------------------------ 1.224 +# now run through the log file and process the performance data 1.225 +#------------------------------------------------------------------------------ 1.226 +$IsValidURL = 0; 1.227 +while (<LOG_FILE>) 1.228 +{ 1.229 + $ThisLine = $_; 1.230 + chop ($ThisLine); 1.231 + 1.232 + if (/Timing layout/) 1.233 + { 1.234 +# @List = split (/webshell: /, $ThisLine); 1.235 +# $WebShell = $List[1]; 1.236 +# $WebShell = "(webBrowserChrome=".$WebShell; 1.237 +# $WebShell = $WebShell."):"; 1.238 +# debug_print( "$WebShell\n" ); 1.239 + 1.240 + @List = split (/'/, $ThisLine); 1.241 + $url = $List[1]; 1.242 + debug_print( "(URI: $url) " ); 1.243 + if( $url =~ /$LinkURL/ ){ 1.244 + debug_print( "$url is the one!\n" ); 1.245 + $IsValidURL = 1; 1.246 + } else { 1.247 + debug_print( "Skipping URL $url\n" ); 1.248 + $IsValidURL = 0; 1.249 + } 1.250 + } 1.251 + if (/Content/){ 1.252 + if ($IsValidURL == 1){ 1.253 + @List = split (/ /, $ThisLine); 1.254 + if($useClockTime){ 1.255 + @clockTimeList = split(/:/, $List[6]); 1.256 + $Content_Time += $clockTimeList[2]; 1.257 + } else { 1.258 + $Content_Time += $List[9]; 1.259 + } 1.260 + $Content_Flag = 1; 1.261 + debug_print( "Content Time: $Content_Time\n" ); 1.262 + } 1.263 + } 1.264 + if (/Reflow/){ 1.265 + if ($IsValidURL == 1){ 1.266 + @List = split (/ /, $ThisLine); 1.267 + if($useClockTime){ 1.268 + @clockTimeList = split(/:/, $List[5]); 1.269 + $Reflow_Time += $clockTimeList[2]; 1.270 + } else { 1.271 + $Reflow_Time += $List[8]; 1.272 + } 1.273 + $Reflow_Flag = 1; 1.274 + debug_print( "Reflow Time: $Reflow_Time\n" ); 1.275 + } 1.276 + } 1.277 + if (/Frame construction plus/){ 1.278 + if ($IsValidURL == 1){ 1.279 + @List = split (/ /, $ThisLine); 1.280 + if($useClockTime){ 1.281 + @clockTimeList = split(/:/, $List[9]); 1.282 + $FrameAndStyle_Time += $clockTimeList[2]; 1.283 + } else { 1.284 + $FrameAndStyle_Time += $List[12]; 1.285 + } 1.286 + debug_print( "Frame and Style Time: $FrameAndStyle_Time\n" ); 1.287 + } 1.288 + } 1.289 + if (/Style/){ 1.290 + if ($IsValidURL == 1){ 1.291 + @List = split (/ /, $ThisLine); 1.292 + if($useClockTime){ 1.293 + @clockTimeList = split(/:/, $List[6]); 1.294 + $Style_Time += $clockTimeList[2]; 1.295 + } else { 1.296 + $Style_Time += $List[9]; 1.297 + } 1.298 + $Style_Flag = 1; 1.299 + debug_print( "Style Time: $Style_Time\n" ); 1.300 + } 1.301 + } 1.302 + if (/Parse/){ 1.303 + if ($IsValidURL == 1){ 1.304 + @List = split (/ /, $ThisLine); 1.305 + if($useClockTime){ 1.306 + @clockTimeList = split(/:/, $List[5]); 1.307 + $Parse_Time += $clockTimeList[2]; 1.308 + } else { 1.309 + $Parse_Time += $List[8]; 1.310 + } 1.311 + $Parse_Flag = 1; 1.312 + debug_print( "Parse Time: $Parse_Time\n" ); 1.313 + } 1.314 + } 1.315 + if (/Total/){ 1.316 + if ($IsValidURL == 1){ 1.317 + @List = split (/ /, $ThisLine); 1.318 + $temp = $List[6]; 1.319 + if ( 1.320 +# ($temp == $WebShell) && 1.321 + ($Parse_Flag == 1) && 1.322 + ($Content_Flag == 1) && 1.323 + ($Reflow_Flag == 1) && 1.324 + ($Style_Flag == 1)){ 1.325 + $TotalPageLoad_Time = $List[12]; 1.326 + debug_print( "Total Page Load_Time Time: $TotalPageLoad_Time\n" ); 1.327 + $Content_Flag = 0; 1.328 + $Reflow_Flag = 0; 1.329 + $Style_Flag = 0; 1.330 + $Parse_Flag = 0; 1.331 + } 1.332 + } 1.333 + } 1.334 +} 1.335 + 1.336 +#------------------------------------------------------------------------------ 1.337 +# Calculate the significant time values 1.338 +#------------------------------------------------------------------------------ 1.339 +$Frame_Time = $FrameAndStyle_Time - $Style_Time; 1.340 +if($Frame_Time < 0.0){ 1.341 + print( "\n***** ERROR: negative FrameTime *****\n"); 1.342 + $Frame_Time = 0; 1.343 +} 1.344 +$TotalLayout_Time = $Content_Time + $Reflow_Time + $Frame_Time + $Style_Time + $Parse_Time; 1.345 +$Avg_Time = $Avg_Time + $TotalLayoutTime + $TotalPageLoad_Time; 1.346 + 1.347 +if( $TotalLayout_Time > 0 ){ 1.348 + if ($Content_Time != 0) 1.349 + { 1.350 + $Content_Time_Percentage = ($Content_Time / $TotalLayout_Time) * 100; 1.351 + } 1.352 + if ($Reflow_Time != 0) 1.353 + { 1.354 + $Reflow_Time_Percentage = ($Reflow_Time / $TotalLayout_Time) * 100; 1.355 + } 1.356 + if ($Frame_Time != 0) 1.357 + { 1.358 + $Frame_Time_Percentage = ($Frame_Time / $TotalLayout_Time) * 100; 1.359 + } 1.360 + if ($Style_Time != 0) 1.361 + { 1.362 + $Style_Time_Percentage = ($Style_Time / $TotalLayout_Time) * 100; 1.363 + } 1.364 + if ($Parse_Time != 0) 1.365 + { 1.366 + $Parse_Time_Percentage = ($Parse_Time / $TotalLayout_Time) * 100; 1.367 + } 1.368 + if( $TotalPageLoad_Time > 0 ){ 1.369 + $TotalLayout_Time_Percentage = ($TotalLayout_Time / $TotalPageLoad_Time) * 100; 1.370 + } else { 1.371 + $TotalLayout_Time_Percentage = 100; 1.372 + } 1.373 +} 1.374 + 1.375 +#------------------------------------------------------------------------------ 1.376 +# Add current values to those in the averages-fields 1.377 +#------------------------------------------------------------------------------ 1.378 +$Avg_Content_Time += $Content_Time; 1.379 +$Avg_Reflow_Time += $Reflow_Time; 1.380 +$Avg_Frame_Time += $Frame_Time; 1.381 +$Avg_Style_Time += $Style_Time; 1.382 +$Avg_Parse_Time += $Parse_Time; 1.383 +$Avg_TotalPageLoad_Time += $TotalPageLoad_Time; 1.384 +$Avg_TotalLayout_Time += $TotalLayout_Time; 1.385 + 1.386 +$Avg_Content_Time_Percentage += $Content_Time_Percentage; 1.387 +$Avg_Reflow_Time_Percentage += $Reflow_Time_Percentage; 1.388 +$Avg_Frame_Time_Percentage += $Frame_Time_Percentage; 1.389 +$Avg_Style_Time_Percentage += $Style_Time_Percentage; 1.390 +$Avg_Parse_Time_Percentage += $Parse_Time_Percentage; 1.391 +$Avg_TotalLayout_Time_Percentage += $TotalLayout_Time_Percentage; 1.392 + 1.393 +$Num_Entries += 1; 1.394 + 1.395 +#------------------------------------------------------------------------------ 1.396 +# Now write this site's data to the table 1.397 +#------------------------------------------------------------------------------ 1.398 +open (TABLE_FILE, ">>table.html"); 1.399 + 1.400 +print (TABLE_FILE "<tr>"); 1.401 + 1.402 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.403 +print (TABLE_FILE "<center><a href='$LinkURL'>$UrlName</a></center>"); 1.404 +print (TABLE_FILE "</td>"); 1.405 + 1.406 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.407 +printf (TABLE_FILE "<center>%4.2f</center>",$Parse_Time); 1.408 +print (DEVIATION "$Parse_Time,"); 1.409 +print (TABLE_FILE "</td>"); 1.410 + 1.411 +print (TABLE_FILE "<td BGCOLOR='#FFFF00'>"); 1.412 +printf (TABLE_FILE "<center>%4.2f</center>",$Parse_Time_Percentage); 1.413 +print (DEVIATION "$Parse_Time_Percentage,"); 1.414 +print (TABLE_FILE "</td>"); 1.415 + 1.416 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.417 +printf (TABLE_FILE "<center>%4.2f</center>",$Content_Time); 1.418 +print (DEVIATION "$Content_Time,"); 1.419 +print (TABLE_FILE "</td>"); 1.420 + 1.421 +print (TABLE_FILE "<td BGCOLOR='#FFFF00'>"); 1.422 +printf (TABLE_FILE "<center>%4.2f</center>",$Content_Time_Percentage); 1.423 +print (DEVIATION "$Content_Time_Percentage,"); 1.424 +print (TABLE_FILE "</td>"); 1.425 + 1.426 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.427 +printf (TABLE_FILE "<center>%4.2f</center>",$Frame_Time); 1.428 +print (DEVIATION "$Frame_Time,"); 1.429 +print (TABLE_FILE "</td>"); 1.430 + 1.431 +print (TABLE_FILE "<td BGCOLOR='#FFFF00'>"); 1.432 +printf (TABLE_FILE "<center>%4.2f</center>",$Frame_Time_Percentage); 1.433 +print (DEVIATION "$Frame_Time_Percentage,"); 1.434 +print (TABLE_FILE "</td>"); 1.435 + 1.436 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.437 +printf (TABLE_FILE "<center>%4.2f</center>",$Style_Time); 1.438 +print (DEVIATION "$Style_Time,"); 1.439 +print (TABLE_FILE "</td>"); 1.440 + 1.441 +print (TABLE_FILE "<td BGCOLOR='#FFFF00'>"); 1.442 +printf (TABLE_FILE "<center>%4.2f</center>",$Style_Time_Percentage); 1.443 +print (DEVIATION "$Style_Time_Percentage,"); 1.444 +print (TABLE_FILE "</td>"); 1.445 + 1.446 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.447 +printf (TABLE_FILE "<center>%4.2f</center>",$Reflow_Time); 1.448 +print (DEVIATION "$Reflow_Time,"); 1.449 +print (TABLE_FILE "</td>"); 1.450 + 1.451 +print (TABLE_FILE "<td BGCOLOR='#FFFF00'>"); 1.452 +printf (TABLE_FILE "<center>%4.2f</center>",$Reflow_Time_Percentage); 1.453 +print (DEVIATION "$Reflow_Time_Percentage,"); 1.454 +print (TABLE_FILE "</td>"); 1.455 + 1.456 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.457 +printf (TABLE_FILE "<center>%4.2f</center>",$TotalLayout_Time); 1.458 +print (DEVIATION "$TotalLayout_Time,"); 1.459 +print (TABLE_FILE "</td>"); 1.460 + 1.461 +print (TABLE_FILE "<td BGCOLOR='#FFFF00'>"); 1.462 +printf (TABLE_FILE "<center>%4.2f</center>",$TotalLayout_Time_Percentage); 1.463 +print (DEVIATION "$TotalLayout_Time_Percentage,"); 1.464 +print (TABLE_FILE "</td>"); 1.465 + 1.466 +print (TABLE_FILE "<td BGCOLOR='#FFFFFF'>"); 1.467 +printf (TABLE_FILE "<center>%4.2f</center>",$TotalPageLoad_Time); 1.468 +print (DEVIATION "$TotalPageLoad_Time\n"); 1.469 +print (TABLE_FILE "</td>"); 1.470 + 1.471 +print (TABLE_FILE "</tr>\n"); 1.472 + 1.473 +close (LOG_FILE); 1.474 + 1.475 +open (AVERAGE, "> Average.txt"); 1.476 +print (AVERAGE "Num Entries: $Num_Entries\n"); 1.477 +print (AVERAGE "Avg Parse: $Avg_Parse_Time\n"); 1.478 +print (AVERAGE "Per Parse: $Avg_Parse_Time_Percentage\n"); 1.479 +print (AVERAGE "Avg Content: $Avg_Content_Time\n"); 1.480 +print (AVERAGE "Per Content: $Avg_Content_Time_Percentage\n"); 1.481 +print (AVERAGE "Avg Frame: $Avg_Frame_Time\n"); 1.482 +print (AVERAGE "Per Frame: $Avg_Frame_Time_Percentage\n"); 1.483 +print (AVERAGE "Avg Style: $Avg_Style_Time\n"); 1.484 +print (AVERAGE "Per Style: $Avg_Style_Time_Percentage\n"); 1.485 +print (AVERAGE "Avg Reflow: $Avg_Reflow_Time\n"); 1.486 +print (AVERAGE "Per Reflow: $Avg_Reflow_Time_Percentage\n"); 1.487 +print (AVERAGE "Avg TotalLayout: $Avg_TotalLayout_Time\n"); 1.488 +print (AVERAGE "Per Layout: $Avg_TotalLayout_Time_Percentage\n"); 1.489 +print (AVERAGE "Avg PageLoad: $Avg_TotalPageLoad_Time\n"); 1.490 +close (AVERAGE);