further improve percentile() code

pull/14795/head
Jan Tattermusch 7 years ago
parent 577e637920
commit 9f40b5f293
  1. 15
      tools/profiling/latency_profile/profile_analyzer.py

@ -194,14 +194,13 @@ def percentile(N, percent, key=lambda x: x):
""" """
if not N: if not N:
return None return None
idx = (len(N) - 1) * percent float_idx = (len(N) - 1) * percent
idx_floor = math.floor(idx) idx = int(float_idx)
idx_ceil = math.ceil(idx) result = key(N[idx])
if idx_floor != idx_ceil: if idx < len(N) - 1:
# interpolate the nearest element values # interpolate with the next element's value
return (key(N[int(idx_floor)]) * (idx_ceil - idx) + result += (float_idx - idx) * (key(N[idx + 1]) - key(N[idx]))
key(N[int(idx_ceil)]) * (idx - idx_floor)) return result
return key(N[int(idx)])
def tidy_tag(tag): def tidy_tag(tag):

Loading…
Cancel
Save