Pārlūkot izejas kodu

Expanded for Hybrid and mmap

dstromberg 13 gadi atpakaļ
vecāks
revīzija
7f6b7884e1
1 mainītis faili ar 48 papildinājumiem un 27 dzēšanām
  1. 48 27
      gen-performance-graph

+ 48 - 27
gen-performance-graph

@@ -1,38 +1,45 @@
 #!/usr/bin/python
 
-#
-# Copyright (C) 2000-2005 by Yasushi Saito (yasushi.saito@gmail.com)
-# 
-# Pychart is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any
-# later version.
-#
-# Pychart is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# for more details.
-#
-
 import sys
+import anydbm
 from pychart import *
 
-def get_timing(filename):
-	file_ = open(filename, 'r')
+def get_timing(kind):
+	database = anydbm.open('performance-numbers', 'r')
 	list_ = []
-	for line in file_:
-		fields = line.split()
-		set_size = float(fields[0])
-		duration = float(fields[1])
-		list_.append( ( set_size, duration ) )
-	file_.close()
+	for key in database.keys():
+		fields = key.split()
+		#print fields[0], kind
+		if fields[0] == kind:
+			set_size = float(fields[1])
+			duration = float(database[key])
+			list_.append( ( set_size, duration ) )
+	database.close()
+	list_.sort()
 	return list_
 
+#def get_timing(filename):
+#	file_ = open(filename, 'r')
+#	list_ = []
+#	for line in file_:
+#		fields = line.split()
+#		set_size = float(fields[0])
+#		duration = float(fields[1])
+#		list_.append( ( set_size, duration ) )
+#	file_.close()
+#	return list_
+
+def get_hybrid_timing():
+	return get_timing('hybrid')
+
 def get_array_timing():
-	return get_timing('array.txt')
+	return get_timing('array')
 
 def get_seek_timing():
-	return get_timing('seek.txt')
+	return get_timing('seek')
+
+def get_mmap_timing():
+	return get_timing('mmap')
 
 def desired_y_max(*list_):
 	maximum = 0.0
@@ -45,16 +52,24 @@ def main():
 	theme.get_options()
 	theme.output_format = 'pdf'
 	theme.use_color = 1
+	theme.output_file = 'performance-graph.pdf'
+	theme.default_font_size = 15
 	theme.reinitialize()
 
 	width = 800
 	height = width * 4 // 5
 	size = (width, height)
 
+	hybrid_timing_data = get_hybrid_timing()
+	print 'hybrid', hybrid_timing_data
 	array_timing_data = get_array_timing()
+	print 'array', array_timing_data
 	seek_timing_data = get_seek_timing()
+	print 'seek', seek_timing_data
+	mmap_timing_data = get_mmap_timing()
+	print 'mmap', mmap_timing_data
 
-	y_max = desired_y_max(array_timing_data, seek_timing_data)
+	y_max = desired_y_max(array_timing_data, seek_timing_data, hybrid_timing_data, mmap_timing_data)
 
 	can = canvas.default_canvas()
 
@@ -65,8 +80,8 @@ def main():
 		y_range = (0.0001, y_max + 100),
 		x_coord = log_coord.T(),
 		y_coord = log_coord.T(),
-		x_axis = axis.X(format="%d", label="Set size"),
-		y_axis = axis.Y(format="%d", label="Time"),
+		x_axis = axis.X(format="%g", label="Number of elements in set"),
+		y_axis = axis.Y(format="%g", label="Seconds"),
 		)
 
 	lp = line_plot.T(data=array_timing_data, label="Array")
@@ -75,6 +90,12 @@ def main():
 	lp = line_plot.T(data=seek_timing_data, label="Seek")
 	ar.add_plot(lp)
 					
+	lp = line_plot.T(data=hybrid_timing_data, label="Hybrid")
+	ar.add_plot(lp)
+					
+	lp = line_plot.T(data=mmap_timing_data, label="mmap")
+	ar.add_plot(lp)
+					
 	ar.draw()
 
 	#can.show(ar.x_pos(4), ar.y_pos(970), "/a50{}seek")