1 #!/usr/bin/python 2 3 # Copyright (C) 2018 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 import os 18 import sys 19 20 import numpy as np 21 from matplotlib import pyplot as plt 22 23 from absl import app 24 from absl import flags 25 26 FLAGS = flags.FLAGS 27 28 flags.DEFINE_integer('window', 100, 'Size of rolling average window') 29 30 COLORS = ['b', 'g', 'r', 'c', 'm', 'y', 'k', 'indigo'] 31 32 33 def max_default(seq, default): 34 try: 35 return np.max(seq) 36 except ValueError: 37 return default 38 39 40 def main(argv): 41 max_val = 0 42 max_key = "" 43 44 n = 0 45 for fn in argv[1:]: 46 name = os.path.basename(fn) 47 xs = np.loadtxt(fn, dtype=np.int) 48 ys = np.arange(len(xs)) 49 50 delta = ys - np.array([max_default(ys[xs < x - FLAGS.window], np.NaN) 51 for x in xs]) 52 53 max_delta = np.nanmax(delta) 54 if max_delta > max_val: 55 max_val = max_delta 56 max_key = name 57 58 plt.plot(xs, delta, color=COLORS[n % len(COLORS)], label=name) 59 print xs, delta 60 n += 1 61 print "Max delta %d in %s" % (max_val, max_key) 62 print "Buffer size: %d KB" % (max_val * 4) 63 plt.legend() 64 plt.show() 65 66 67 if __name__ == '__main__': 68 app.run(main) 69