--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvesterplugins/tsrc/performanceSummary.pl Mon Apr 19 14:40:05 2010 +0300
@@ -0,0 +1,93 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+#Change Log:
+#version 0.2: Analyzes multiple files in current directory.
+#version 0.1: Initial functionality.
+#
+#Provides summary of performance logs which are in the format:
+#add nnn - Time for add operation
+#del nnn - Time for delete operation
+#upd nnn - Time for update opearation
+#Ignores all other lines.
+#
+#Reads the current directory looking for file names
+#with the pattern '*Perf.txt' (case sensitive).
+#
+#Prints the cumulative times for all ADD/DEL/UPD operations
+
+use warnings;
+use strict;
+
+#This prints the summary; called by analzyeFile
+sub printSummary($$$){
+ print "Total time for Add: ".(shift)."\n";
+ print "Total time for Delete: ".(shift)."\n";
+ print "Total time for Update: ".(shift)."\n";
+ print "-------------------------------------\n\n";
+}
+
+#This function analyzes the contents of the performance logs file
+sub analyzeFile($){
+ my $fh = shift;
+ my $add=0;
+ my $del=0;
+ my $upd=0;
+ foreach my $line (<$fh>){
+ chomp($line);#remove the newline from $line.
+ #Documentation recommends not to use $' for
+ #performance reasons. In this case, its okay.
+ if ($line =~ m/^add */) {
+ $add += $';
+ }
+ if($line =~ m/^del */) {
+ $del += $';
+ }
+ if($line =~ m/^upd */) {
+ $upd += $';
+ }
+ }
+ #better if we can 'return; these values and have the
+ #caller print the values returned.
+ #very tight function coupling otherwise.
+ printSummary($add, $del, $upd);
+}
+
+#Main entry point
+sub main(){
+ #We can change the function to be able to read
+ #cmd line args and analyze the necessary directory
+ #but thats for later. Not required for the moment.
+ my $directory = ".";
+ my $dirHandle;
+
+ opendir($dirHandle, "$directory") or die("Could not list directory $directory.");
+ my @thefiles = readdir($dirHandle);
+
+ foreach my $f (@thefiles){
+ if ($f =~ m/Perf\.txt$/) {#should end with "Perf.txt"
+ open my $inputFile, "<$f" or die("Could not open log file $f.");
+ print "File: ".$f."\n";
+ print "-----------------------\n";
+ analyzeFile($inputFile);
+ close($inputFile);
+ }
+ }
+ closedir($dirHandle);
+}
+
+#Call main() to do the work.
+main();
\ No newline at end of file