diff -r 000000000000 -r 6474c204b198 tools/performance/layout/Averagetable2.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/performance/layout/Averagetable2.pl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,487 @@ +########################################################################################## +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#------------------------------------------------------------------------------ +sub debug_print { + foreach $str (@_){ +# print( $str ); + } +} +#------------------------------------------------------------------------------ +# get the arguments: +#------------------------------------------------------------------------------ +@ARGV; +$UrlName = $ARGV[0]; +$logFile = $ARGV[1]; +$NumOfSites = $ARGV[2]; +$buildRoot = $ARGV[3]; +$LinkURL = $ARGV[4]; +$useClockTime = $ARGV[5]; +#$buildIDFile = '< '.$buildRoot.'\bin\chrome\locales\en-US\navigator\locale\navigator.dtd'; +#$buildIDFile = ""; +debug_print( "Arguments:[ $UrlName | $logFile | $NumOfSites | $buildRoot | $LinkURL | $useClockTime]\n"); + +#------------------------------------------------------------------------------ +# Open the ID file and get the build ID +#------------------------------------------------------------------------------ + +#open (XUL_FILE, $buildIDFile) or die "Cannot open BuildID file $buildIDFile (AverageTable2.pl)\n"; +#$BuildNo = ""; +#$LineList; +#while () +#{ +# $ThisLine = $_; +# chop ($ThisLine); +# if (/Build ID/){ +# @LineList = split (/\"/, $ThisLine); +# $BuildNo = $LineList[1]; +# } +#} +#@LineList = split (/ /, $BuildNo); +#$BuildNo = $LineList[2]; +#$BuildNo =~ s/"//g; +#$BuildNo =~ s/[>]//g; +#debug_print ("Build Number: $BuildNo\n"); +#close( XUL_FILE ); + +#------------------------------------------------------------------------------ +# Open the logfile (input) +# and the deviation file (output,append) +#------------------------------------------------------------------------------ +open (LOG_FILE, "< $logFile") or die "Logfile $logFile could not be opened"; + +#------------------------------------------------------------------------------ +# Deviation file: +# Flat file used to calculate and display deviation between latest and +# week old builds data. +# +# Format of flat file is attributes separated by commas with no spaces as follows: +# BuildNo,date,url,parsingtime,parsingper,contenttime,contentper,frametime, +# frameper,styletime,styleper,reflowtime,reflowper,totallayouttime,totallayoutper, +# totalpageloadtime +($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime (time); +$RealMonth = $Month + 1; +$Year += 1900; +$BuildNo = $RealMonth.$DayOfMonth.$Year; +$file = $BuildNo.".dat"; +open (DEVIATION, ">> $file") or die "Deviation file could not be opened"; + +# add entry to the deviation file +($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime (time); +$RealMonth = $Month + 1; +$Year += 1900; +$date2 = $RealMonth.$DayOfMonth.$Year; +print (DEVIATION "$BuildNo,$date2,$UrlName,"); + +#------------------------------------------------------------------------------ +# local variables +#------------------------------------------------------------------------------ +@List; +$Content_Time = 0; +$Reflow_Time = 0; +$FrameAndStyle_Time = 0; +$Frame_Time = 0; +$Style_Time = 0; +$Parse_Time = 0; +$TotalPageLoad_Time = 0; +$TotalLayout_Time = 0; +$Avg_Content_Time = 0; +$Avg_Reflow_Time = 0; +$Avg_FrameAndStyle_Time = 0; +$Avg_Frame_Time = 0; +$Avg_Style_Time = 0; +$Avg_Parse_Time = 0; +$Avg_TotalPageLoad_Time = 0; +$Avg_TotalLayout_Time = 0; +$Content_Time_Percentage = 0; +$Reflow_Time_Percentage = 0; +$FrameAndStyle_Time_Percentage = 0; +$Frame_Time_Percentage = 0; +$Style_Time_Percentage = 0; +$Parse_Time_Percentage = 0; +$TotalLayout_Time_Percentage = 0; +$Avg_Content_Time_Percentage = 0; +$Avg_Reflow_Time_Percentage = 0; +$Avg_FrameAndStyle_Time_Percentage = 0; +$Avg_Frame_Time_Percentage = 0; +$Avg_Style_Time_Percentage = 0; +$Avg_Parse_Time_Percentage = 0; +$Avg_TotalLayout_Time_Percentage = 0; +$Num_Entries = 0; +$valid = 0; +# $WebShell; +$temp; +$url; +$Content_Flag = 0; +$Reflow_Flag = 0; +$Style_Flag = 0; +$Parse_Flag = 0; + +#------------------------------------------------------------------------------ +# Management of averages via average.txt file +# NOTE: the averag.txt file is used to accumulate all performance times +# and keep track of the number of entries. When completed, the footer.pl +# script does the averaging by dividing the accumulated times by the +# number of entries +#------------------------------------------------------------------------------ + +# if first site, delete any old Average file (in case the caller did not) +# +if ( $NumOfSites == 1 ){ + unlink( "Average.txt" ); + debug_print( "Deleting file Average.txt\n" ); +} +# load the averages data so we can accumulate it +# +if ( -r "Average.txt" ) { + open (AVERAGE, "< Average.txt"); + while( ){ + $ThisLine = $_; + chop ($ThisLine); + + if( /Num Entries:/ ){ + @list = split( / /, $ThisLine ); + $Num_Entries = $list[2]; + debug_print( "Num Entries: $Num_Entries\n" ); + } + if( /Avg Parse:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Parse_Time = $list[2]; + debug_print( "Avg Parse: $Avg_Parse_Time\n" ); + } + if( /Per Parse:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Parse_Time_Percentage = $list[2]; + debug_print( "Per Parse: $Avg_Parse_Time_Percentage\n" ); + } + if( /Avg Content:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Content_Time = $list[2]; + debug_print( "Avg Content: $Avg_Content_Time\n" ); + } + if( /Per Content:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Content_Time_Percentage = $list[2]; + debug_print( "Per Content: $Avg_Content_Time_Percentage\n" ); + } + if( /Avg Frame:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Frame_Time = $list[2]; + debug_print( "Avg Frame: $Avg_Frame_Time\n" ); + } + if( /Per Frame:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Frame_Time_Percentage = $list[2]; + debug_print( "Per Frame: $Avg_Frame_Time_Percentage\n" ); + } + if( /Avg Style:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Style_Time = $list[2]; + debug_print( "Avg Style: $Avg_Style_Time\n" ); + } + if( /Per Style:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Style_Time_Percentage = $list[2]; + debug_print( "Per Style: $Avg_Style_Time_Percentage\n" ); + } + if( /Avg Reflow:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Reflow_Time = $list[2]; + debug_print( "Avg Reflow: $Avg_Reflow_Time\n" ); + } + if( /Per Reflow:/ ){ + @list = split( / /, $ThisLine ); + $Avg_Reflow_Time_Percentage = $list[2]; + debug_print( "Per Reflow: $Avg_Reflow_Time_Percentage\n" ); + } + if( /Avg TotalLayout:/ ){ + @list = split( / /, $ThisLine ); + $Avg_TotalLayout_Time = $list[2]; + debug_print( "Avg TotalLayout: $Avg_TotalLayout_Time\n" ); + } + if( /Per Layout:/ ){ + @list = split( / /, $ThisLine ); + $Avg_TotalLayout_Time_Percentage = $list[2]; + debug_print( "Per Layout: $Avg_TotalLayout_Time_Percentage\n" ); + } + if( /Avg PageLoad:/ ){ + @list = split( / /, $ThisLine ); + $Avg_TotalPageLoad_Time = $list[2]; + debug_print( "Avg PageLoad: $Avg_TotalPageLoad_Time\n" ); + } + } + print (AVERAGE "Avg PageLoad: $Avg_TotalPageLoad_Time\n"); + close (AVERAGE); +} + +#------------------------------------------------------------------------------ +# now run through the log file and process the performance data +#------------------------------------------------------------------------------ +$IsValidURL = 0; +while () +{ + $ThisLine = $_; + chop ($ThisLine); + + if (/Timing layout/) + { +# @List = split (/webshell: /, $ThisLine); +# $WebShell = $List[1]; +# $WebShell = "(webBrowserChrome=".$WebShell; +# $WebShell = $WebShell."):"; +# debug_print( "$WebShell\n" ); + + @List = split (/'/, $ThisLine); + $url = $List[1]; + debug_print( "(URI: $url) " ); + if( $url =~ /$LinkURL/ ){ + debug_print( "$url is the one!\n" ); + $IsValidURL = 1; + } else { + debug_print( "Skipping URL $url\n" ); + $IsValidURL = 0; + } + } + if (/Content/){ + if ($IsValidURL == 1){ + @List = split (/ /, $ThisLine); + if($useClockTime){ + @clockTimeList = split(/:/, $List[6]); + $Content_Time += $clockTimeList[2]; + } else { + $Content_Time += $List[9]; + } + $Content_Flag = 1; + debug_print( "Content Time: $Content_Time\n" ); + } + } + if (/Reflow/){ + if ($IsValidURL == 1){ + @List = split (/ /, $ThisLine); + if($useClockTime){ + @clockTimeList = split(/:/, $List[5]); + $Reflow_Time += $clockTimeList[2]; + } else { + $Reflow_Time += $List[8]; + } + $Reflow_Flag = 1; + debug_print( "Reflow Time: $Reflow_Time\n" ); + } + } + if (/Frame construction plus/){ + if ($IsValidURL == 1){ + @List = split (/ /, $ThisLine); + if($useClockTime){ + @clockTimeList = split(/:/, $List[9]); + $FrameAndStyle_Time += $clockTimeList[2]; + } else { + $FrameAndStyle_Time += $List[12]; + } + debug_print( "Frame and Style Time: $FrameAndStyle_Time\n" ); + } + } + if (/Style/){ + if ($IsValidURL == 1){ + @List = split (/ /, $ThisLine); + if($useClockTime){ + @clockTimeList = split(/:/, $List[6]); + $Style_Time += $clockTimeList[2]; + } else { + $Style_Time += $List[9]; + } + $Style_Flag = 1; + debug_print( "Style Time: $Style_Time\n" ); + } + } + if (/Parse/){ + if ($IsValidURL == 1){ + @List = split (/ /, $ThisLine); + if($useClockTime){ + @clockTimeList = split(/:/, $List[5]); + $Parse_Time += $clockTimeList[2]; + } else { + $Parse_Time += $List[8]; + } + $Parse_Flag = 1; + debug_print( "Parse Time: $Parse_Time\n" ); + } + } + if (/Total/){ + if ($IsValidURL == 1){ + @List = split (/ /, $ThisLine); + $temp = $List[6]; + if ( +# ($temp == $WebShell) && + ($Parse_Flag == 1) && + ($Content_Flag == 1) && + ($Reflow_Flag == 1) && + ($Style_Flag == 1)){ + $TotalPageLoad_Time = $List[12]; + debug_print( "Total Page Load_Time Time: $TotalPageLoad_Time\n" ); + $Content_Flag = 0; + $Reflow_Flag = 0; + $Style_Flag = 0; + $Parse_Flag = 0; + } + } + } +} + +#------------------------------------------------------------------------------ +# Calculate the significant time values +#------------------------------------------------------------------------------ +$Frame_Time = $FrameAndStyle_Time - $Style_Time; +if($Frame_Time < 0.0){ + print( "\n***** ERROR: negative FrameTime *****\n"); + $Frame_Time = 0; +} +$TotalLayout_Time = $Content_Time + $Reflow_Time + $Frame_Time + $Style_Time + $Parse_Time; +$Avg_Time = $Avg_Time + $TotalLayoutTime + $TotalPageLoad_Time; + +if( $TotalLayout_Time > 0 ){ + if ($Content_Time != 0) + { + $Content_Time_Percentage = ($Content_Time / $TotalLayout_Time) * 100; + } + if ($Reflow_Time != 0) + { + $Reflow_Time_Percentage = ($Reflow_Time / $TotalLayout_Time) * 100; + } + if ($Frame_Time != 0) + { + $Frame_Time_Percentage = ($Frame_Time / $TotalLayout_Time) * 100; + } + if ($Style_Time != 0) + { + $Style_Time_Percentage = ($Style_Time / $TotalLayout_Time) * 100; + } + if ($Parse_Time != 0) + { + $Parse_Time_Percentage = ($Parse_Time / $TotalLayout_Time) * 100; + } + if( $TotalPageLoad_Time > 0 ){ + $TotalLayout_Time_Percentage = ($TotalLayout_Time / $TotalPageLoad_Time) * 100; + } else { + $TotalLayout_Time_Percentage = 100; + } +} + +#------------------------------------------------------------------------------ +# Add current values to those in the averages-fields +#------------------------------------------------------------------------------ +$Avg_Content_Time += $Content_Time; +$Avg_Reflow_Time += $Reflow_Time; +$Avg_Frame_Time += $Frame_Time; +$Avg_Style_Time += $Style_Time; +$Avg_Parse_Time += $Parse_Time; +$Avg_TotalPageLoad_Time += $TotalPageLoad_Time; +$Avg_TotalLayout_Time += $TotalLayout_Time; + +$Avg_Content_Time_Percentage += $Content_Time_Percentage; +$Avg_Reflow_Time_Percentage += $Reflow_Time_Percentage; +$Avg_Frame_Time_Percentage += $Frame_Time_Percentage; +$Avg_Style_Time_Percentage += $Style_Time_Percentage; +$Avg_Parse_Time_Percentage += $Parse_Time_Percentage; +$Avg_TotalLayout_Time_Percentage += $TotalLayout_Time_Percentage; + +$Num_Entries += 1; + +#------------------------------------------------------------------------------ +# Now write this site's data to the table +#------------------------------------------------------------------------------ +open (TABLE_FILE, ">>table.html"); + +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +print (TABLE_FILE "
$UrlName
"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Parse_Time); +print (DEVIATION "$Parse_Time,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Parse_Time_Percentage); +print (DEVIATION "$Parse_Time_Percentage,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Content_Time); +print (DEVIATION "$Content_Time,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Content_Time_Percentage); +print (DEVIATION "$Content_Time_Percentage,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Frame_Time); +print (DEVIATION "$Frame_Time,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Frame_Time_Percentage); +print (DEVIATION "$Frame_Time_Percentage,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Style_Time); +print (DEVIATION "$Style_Time,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Style_Time_Percentage); +print (DEVIATION "$Style_Time_Percentage,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Reflow_Time); +print (DEVIATION "$Reflow_Time,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$Reflow_Time_Percentage); +print (DEVIATION "$Reflow_Time_Percentage,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$TotalLayout_Time); +print (DEVIATION "$TotalLayout_Time,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$TotalLayout_Time_Percentage); +print (DEVIATION "$TotalLayout_Time_Percentage,"); +print (TABLE_FILE ""); + +print (TABLE_FILE ""); +printf (TABLE_FILE "
%4.2f
",$TotalPageLoad_Time); +print (DEVIATION "$TotalPageLoad_Time\n"); +print (TABLE_FILE ""); + +print (TABLE_FILE "\n"); + +close (LOG_FILE); + +open (AVERAGE, "> Average.txt"); +print (AVERAGE "Num Entries: $Num_Entries\n"); +print (AVERAGE "Avg Parse: $Avg_Parse_Time\n"); +print (AVERAGE "Per Parse: $Avg_Parse_Time_Percentage\n"); +print (AVERAGE "Avg Content: $Avg_Content_Time\n"); +print (AVERAGE "Per Content: $Avg_Content_Time_Percentage\n"); +print (AVERAGE "Avg Frame: $Avg_Frame_Time\n"); +print (AVERAGE "Per Frame: $Avg_Frame_Time_Percentage\n"); +print (AVERAGE "Avg Style: $Avg_Style_Time\n"); +print (AVERAGE "Per Style: $Avg_Style_Time_Percentage\n"); +print (AVERAGE "Avg Reflow: $Avg_Reflow_Time\n"); +print (AVERAGE "Per Reflow: $Avg_Reflow_Time_Percentage\n"); +print (AVERAGE "Avg TotalLayout: $Avg_TotalLayout_Time\n"); +print (AVERAGE "Per Layout: $Avg_TotalLayout_Time_Percentage\n"); +print (AVERAGE "Avg PageLoad: $Avg_TotalPageLoad_Time\n"); +close (AVERAGE);