harvesterplugins/tsrc/performanceSummary.pl
changeset 0 ccd0fd43f247
--- /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