summaryrefslogtreecommitdiff
path: root/seivots-to-csv
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-04-21 14:36:06 +0100
committerLars Wirzenius <liw@liw.fi>2011-04-21 14:36:06 +0100
commit17cc5128cbc0657ac980c03d6f1c03b33be9ea91 (patch)
tree6ddd0082eccaecff3bddc6ca1b738231d2e1e74c /seivots-to-csv
parentefedbacac4e0677ba0768f8a87932d3ca83739ac (diff)
downloadseivot-17cc5128cbc0657ac980c03d6f1c03b33be9ea91.tar.gz
Add transfer speeds to output.
Diffstat (limited to 'seivots-to-csv')
-rwxr-xr-xseivots-to-csv26
1 files changed, 20 insertions, 6 deletions
diff --git a/seivots-to-csv b/seivots-to-csv
index 2f84471..80cf9b8 100755
--- a/seivots-to-csv
+++ b/seivots-to-csv
@@ -45,7 +45,9 @@ class SeivotToCsv(cliapp.Application):
f = open(filename, 'wb')
writer = csv.writer(f, lineterminator='\n')
writer.writerow(['obnam', 'larch', 'gen0 time (s)',
+ 'gen0 speed (Mbit/s)',
'gen0 RAM (MiB)', 'slowest inc (s)',
+ 'slowest inc (Mbit/s)',
'largest RAM inc (MiB)'])
for seivot in group:
row = self.get_row_data(op, seivot)
@@ -71,30 +73,42 @@ class SeivotToCsv(cliapp.Application):
return [s for s in seivots if self.get_size(s) == size]
def get_row_data(self, op, seivot):
+ bytes = seivot.getint('0', '%s.new-data' % op)
+ secs = seivot.getfloat('0', '%s.real' % op)
+ slowest_inc = self.find_slowest_incremental(op, seivot)
+ inc_bytes = seivot.getint(slowest_inc, '%s.new-data' % op)
+ inc_secs = seivot.getfloat(slowest_inc, '%s.real' % op)
row = ['r%s' % seivot.get('meta', 'revision'),
'r%s' % seivot.get('meta', 'larch-revision'),
- seivot.getfloat('0', '%s.real' % op),
+ secs,
+ self.bitspeed(bytes, secs),
self.bytesize(seivot.getfloat('0', '%s.maxrss' % op)),
- self.find_slowest_incremental(op, seivot),
+ inc_secs,
+ self.bitspeed(inc_bytes, inc_secs),
self.find_largest_incremental(op, seivot)]
return row
def values(self, op, suffix, seivot):
for section in seivot.sections():
if section not in ['meta', '0']:
- yield seivot.getfloat(section, '%s.%s' % (op, suffix))
+ yield section, seivot.getfloat(section, '%s.%s' % (op,suffix))
def find_slowest_incremental(self, op, seivot):
- v = self.values(op, 'real', seivot)
- return min(list(v) or [0.0])
+ v = list(self.values(op, 'real', seivot))
+ if not v:
+ return '0'
+ return min(v, key=lambda pair: pair[1])[0]
def find_largest_incremental(self, op, seivot):
v = self.values(op, 'maxrss', seivot)
- return self.bytesize(min(list(v) or [0.0]))
+ return self.bytesize(min(list(x[1] for x in v) or [0.0]))
def bytesize(self, kilobytes):
return '%.1f' % (float(kilobytes) / 1024)
+ def bitspeed(self, bytes, seconds):
+ return '%.1f' % (8*bytes / seconds / (1000**2))
+
if __name__ == '__main__':
SeivotToCsv().run()