Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.57 KB | None | 0 0
  1. from __future__ import print_function
  2.  
  3. import json
  4. import os.path
  5. import glob
  6. import math
  7. import statistics
  8. from shutil import copyfile
  9. from operator import itemgetter
  10.  
  11. os.chdir("browsertime-results-copy");
  12. files = glob.glob("*")
  13.  
  14. metrics = ["pageLoadTime","SpeedIndex","PerceptualSpeedIndex", "ContentfulSpeedIndex", "FirstVisualChange","VisualComplete85"]
  15.  
  16. def filter_outliers(loads, threshold):
  17. length = len(loads)
  18. median = statistics.median(loads)
  19. mean = statistics.mean(loads)
  20. stdev = statistics.stdev(loads)
  21.  
  22. ratio = stdev/mean
  23. while ratio > threshold:
  24. maxDiff = 0
  25. maxIndex = 0
  26. for i,val in enumerate(loads):
  27. if abs(val-median) > maxDiff:
  28. maxDiff = abs(val-median)
  29. maxIndex = i
  30.  
  31. #print("Removing index " + str(maxIndex) + " with value " + str(loads[maxIndex]))
  32. del loads[maxIndex]
  33. if len(loads) <= 5:
  34. return
  35.  
  36. mean = statistics.mean(loads)
  37. median = statistics.median(loads)
  38. ratio = statistics.stdev(loads)/mean
  39. #print("----> ratio = " + str(ratio))
  40.  
  41.  
  42. sortedResults = []
  43. for url in files:
  44. os.chdir(url)
  45. print("\nProcessing " + url)
  46.  
  47. report = []
  48. sessions = sorted(glob.glob("*"))
  49. skipURL=0
  50. for k,session in enumerate(sessions):
  51. print(" Processing {}".format(session));
  52. with open(session + "/browsertime.json") as f:
  53. data = json.load(f)
  54.  
  55.  
  56. pageLoadTime = []
  57. SpeedIndex = []
  58. PerceptualSpeedIndex = []
  59. ContentfulSpeedIndex = []
  60. FirstVisualChange = []
  61. VisualComplete85 = []
  62.  
  63. print("pageLoadTime length = " + str(len(data[0]['browserScripts'])));
  64. print("visualMetrics length = " + str(len(data[0]['visualMetrics'])));
  65.  
  66. #if (len(data[0]['browserScripts']) != len(data[0]['visualMetrics'])):
  67. # skipURL=1
  68. # break
  69.  
  70. iterations=len(data[0]['browserScripts'])
  71. for i in range(0,iterations):
  72. pageLoadTime.append( data[0]['browserScripts'][i]['timings']['pageTimings']['pageLoadTime'] )
  73.  
  74. iterations=len(data[0]['visualMetrics'])
  75. for i in range(0,iterations):
  76. SpeedIndex.append( data[0]['visualMetrics'][i]['SpeedIndex'] )
  77. PerceptualSpeedIndex.append( data[0]['visualMetrics'][i]['PerceptualSpeedIndex'] )
  78. ContentfulSpeedIndex.append( data[0]['visualMetrics'][i]['ContentfulSpeedIndex'] )
  79. FirstVisualChange.append( data[0]['visualMetrics'][i]['FirstVisualChange'] )
  80. VisualComplete85.append( data[0]['visualMetrics'][i]['VisualComplete85'] )
  81.  
  82. #filter_outliers(pageLoadTime, 0.1)
  83. #filter_outliers(SpeedIndex, 0.1)
  84. #filter_outliers(VisualComplete85, 0.1)
  85. #filter_outliers(FirstVisualChange, 0.1)
  86.  
  87. print(pageLoadTime)
  88. instance = {}
  89. instance['pageLoadTimeMean'] = statistics.mean(pageLoadTime);
  90. instance['pageLoadTimeStdev'] = statistics.stdev(pageLoadTime);
  91. instance['SpeedIndexMean'] = statistics.mean(SpeedIndex);
  92. instance['SpeedIndexStdev'] = statistics.stdev(SpeedIndex);
  93. instance['PerceptualSpeedIndexMean'] = statistics.mean(PerceptualSpeedIndex);
  94. instance['PerceptualSpeedIndexStdev'] = statistics.stdev(PerceptualSpeedIndex);
  95. instance['ContentfulSpeedIndexMean'] = statistics.mean(ContentfulSpeedIndex);
  96. instance['ContentfulSpeedIndexStdev'] = statistics.stdev(ContentfulSpeedIndex);
  97. instance['FirstVisualChangeMean'] = statistics.mean(FirstVisualChange);
  98. instance['FirstVisualChangeStdev'] = statistics.stdev(FirstVisualChange);
  99. instance['VisualComplete85Mean'] = statistics.mean(VisualComplete85);
  100. instance['VisualComplete85Stdev'] = statistics.stdev(VisualComplete85);
  101. instance['value'] = session
  102. instance['timestamp'] = data[0]['info']['timestamp']
  103. instance['url'] = url
  104. report.append(instance)
  105.  
  106. sortedResults.append( sorted(report, key=itemgetter('timestamp')) )
  107. os.chdir("..")
  108.  
  109. # Print data
  110. for metric in metrics:
  111. print(metric + ":")
  112. print("-"*106)
  113. for j,l in enumerate(sortedResults):
  114. meanIndex = metric + "Mean"
  115. stdevIndex = metric + "Stdev"
  116.  
  117. print("%-50s"% sortedResults[j][0]["url"], end="")
  118. print("| ", end="")
  119. for i,instance in enumerate(sortedResults[j]):
  120. print("%9.2f"% instance[meanIndex] + " ", end="")
  121. print("(+-%4.0f"% instance[stdevIndex] + ") ", end="")
  122.  
  123. if i == 0:
  124. baseValue = instance[meanIndex]
  125. print(" "*5, end="")
  126. print("|", end="")
  127. else:
  128. speedup = (baseValue-instance[meanIndex])/baseValue*100
  129. print("%7.2f"% speedup + "%", end="")
  130. print(" |", end="")
  131. print("")
  132. print("\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement