github.com/sagansystems/goofys-app@v0.19.1-0.20180410053237-b2302fdf5af9/bench/bench_format.py (about) 1 #!/usr/bin/python 2 3 import uncertainties 4 import numpy 5 import sys 6 7 def filter_outliers(numbers, mean, std): 8 return filter(lambda x: abs(x - mean) < 2 * std, numbers) 9 10 op_str = { 11 'create_files' : 'Create 100 files', 12 'create_files_parallel' : 'Create 100 files (parallel)', 13 'rm_files' : 'Unlink 100 files', 14 'rm_files_parallel' : 'Unlink 100 files (parallel)', 15 'ls_files' : 'ls with 1000 files', 16 'find_files' : "`find' with 1000 dirs/files", 17 'write_md5' : 'Write 1GB', 18 'read_first_byte' : 'Time to 1st byte', 19 'read_md5' : 'Read 1GB', 20 } 21 22 outputOrder = [ 23 'create_files', 24 'create_files_parallel', 25 'rm_files', 26 'rm_files_parallel', 27 'ls_files', 28 'find_files', 29 'write_md5', 30 'read_md5', 31 'read_first_byte', 32 ] 33 34 f = sys.argv[1] 35 data = open(f).readlines() 36 #print 'operation | goofys | s3fs | speedup' 37 #print '----------| ------ | ------ | -------' 38 39 table = [{}, {}, {}] 40 has_data = {} 41 42 print '#operation,time' 43 for l in data: 44 dataset = l.strip().split('\t') 45 for d in range(0, len(dataset)): 46 op, num = dataset[d].split(' ') 47 if not op in table[d]: 48 table[d][op] = [] 49 table[d][op] += [float(num)] 50 has_data[op] = True 51 52 53 for c in outputOrder: 54 if c in has_data: 55 print op_str[c], 56 for d in table: 57 mean = numpy.mean(d[c]) 58 err = numpy.std(d[c]) 59 x = filter_outliers(d[c], mean, err) 60 print "\t%s\t%s\t%s" % (numpy.mean(x), numpy.min(x), numpy.max(x)), 61 print 62 63 # op = op_str[nums[0]] 64 65 # for i in range(1, len(nums)): 66 67 # x = map(lambda x: float(x), nums[1].strip().split(' ')) 68 # y = map(lambda x: float(x), nums[2].strip().split(' ')) 69 # mean_x = numpy.mean(x) 70 # err_x = numpy.std(x) 71 # mean_y = numpy.mean(y) 72 # err_y = numpy.std(y) 73 # fixed_x = fixed_y = "" 74 75 # x2 = filter_outliers(x, mean_x, err_x) 76 # y2 = filter_outliers(y, mean_y, err_y) 77 # if x != x2: 78 # fixed_x = "*" * abs(len(x) - len(x2)) 79 # mean_x = numpy.mean(x2) 80 # err_x = numpy.std(x2) 81 # if y != y2: 82 # fixed_y = "*" * abs(len(y) - len(y2)) 83 # mean_y = numpy.mean(y2) 84 # err_y = numpy.std(y2) 85 86 # print "%s, %s, %s, %s", op, mean_x, mean_x - err_x, mean_x + err_x 87 # # u_x = uncertainties.ufloat(mean_x, err_x) 88 # # u_y = uncertainties.ufloat(mean_y, err_y) 89 # # delta = u_y/u_x 90 # # print "%s | %s%s | %s%s | %sx" % (op, u_x, fixed_x, u_y, fixed_y, delta)