123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/usr/bin/python
- import sys
- import anydbm
- from pychart import *
- def get_timing(kind):
- database = anydbm.open('performance-numbers', 'c')
- list_ = []
- 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')
- def get_seek_timing():
- return get_timing('seek')
- def get_mmap_timing():
- return get_timing('mmap')
- def desired_y_max(*list_):
- maximum = 0.0
- for element in list_:
- for set_size, duration in element:
- maximum = max(duration, maximum)
- return maximum
- 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, hybrid_timing_data, mmap_timing_data)
- can = canvas.default_canvas()
- ar = area.T(
- size = size,
- legend=legend.T(),
- x_range = (1, None),
- y_range = (0.0001, y_max + 100),
- x_coord = log_coord.T(),
- y_coord = log_coord.T(),
- 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")
- ar.add_plot(lp)
-
- 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")
- main()
|