make_tables_tp.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import csv
  2. import math
  3. import sys
  4. import pandas as pd
  5. import numpy as np
  6. def format(mean, std):
  7. if std >= 950:
  8. m = round(mean/1000.0) * 1000
  9. s = round(std/1000.0) * 1000
  10. dec = 0
  11. elif std >= 95:
  12. m = round(mean/100.0) * 100
  13. s = round(std/100.0) * 100
  14. dec = 0
  15. elif std >= 9.5:
  16. m = round(mean/10.0) * 10
  17. s = round(std/10.0) * 10
  18. dec = 0
  19. elif std >= 0.95:
  20. m = round(mean)
  21. s = round(std)
  22. dec = 0
  23. elif std >= 0.095:
  24. m = round(mean*10) / 10.0
  25. s = round(std*10) / 10.0
  26. dec = 1
  27. elif std >= 0.0095:
  28. m = round(mean*100) / 100.0
  29. s = round(std*100) / 100.0
  30. dec = 2
  31. elif std >= 0.00095:
  32. m = round(mean*1000) / 1000.0
  33. s = round(std*1000) / 1000.0
  34. dec = 3
  35. elif std >= 0.000095:
  36. m = round(mean*10000) / 10000.0
  37. s = round(std*10000) / 10000.0
  38. dec = 4
  39. elif std >= 0.0000095:
  40. m = round(mean*100000) / 100000.0
  41. s = round(std*100000) / 100000.0
  42. dec = 5
  43. # We measure in ns; if std == 0, this is the case to use
  44. else:
  45. m = round(mean*1000000) / 1000000.0
  46. s = round(std*1000000) / 1000000.0
  47. dec = 6
  48. m = str(m)
  49. s = str(s)
  50. if dec > 0:
  51. msplit = m.split('.')
  52. ssplit = s.split('.')
  53. if len(msplit) < 2:
  54. m = msplit[0] + '.' + '0' * dec
  55. elif len(msplit[1]) < dec:
  56. m = msplit[0] + '.' + msplit[1] + '0' * (dec - len(msplit[1]))
  57. if len(ssplit) < 2:
  58. s = ssplit[0] + '.' + '0' * dec
  59. elif len(ssplit[1]) < dec:
  60. s = ssplit[0] + '.' + ssplit[1] + '0' * (dec - len(ssplit[1]))
  61. return m, s
  62. def main():
  63. perf = open("performance_stats"+".csv", "w", newline='')
  64. protocols=["Open Invitation", "Trust Promotion(0->1)",
  65. "Trust Migration (0->1)", "Level Up (1->4)", "Issue Invitation",
  66. "Redeem Invitation", "Check Blockage 5%", "Check Blockage 50%", "Check Blockage 100%", "Blockage Migration",
  67. "Report Submit", "Report Status", "Report Resolve"]
  68. files = ["trust_levels.csv", "trust_promo.csv", "trust_mig.csv", "level2.csv",
  69. "invitations.csv", "redeem_invites.csv","check_blockage5.csv",
  70. "check_blockage50.csv","check_blockage100.csv","blockage_migration50.csv",
  71. "report_submit.csv", "report_status.csv", "report_resolve.csv"]
  72. csv_cols = ["RequestS", "RequestT","Rtstdev","ResponseS","ResponseT",
  73. "ReTstdev", "ResponseHT", "RHTstdev"]
  74. perf_columns = ["Protocol","Request Size", "Request Time", "sigma",
  75. "Response Size","Response Time", "sigma",
  76. "Response Handling Time", "sigma"]
  77. worst_resp = 0
  78. perfwriter = csv.writer(perf, delimiter=',')
  79. perfwriter.writerow(perf_columns)
  80. for i, protocol in enumerate(protocols):
  81. columns = ["Percent","Bridges", "RequestS", "Rsstdev", "RequestT",
  82. "Rtstdev", "ResponseS","Restdev","ResponseT",
  83. "ReTstdev", "ResponseHT", "RHTstdev"]
  84. with open(files[i], 'r') as f:
  85. stats = csv.reader(f, delimiter=',')
  86. perf_in = []
  87. perf_in.append(protocol)
  88. for row in stats:
  89. if row[1] == "600":
  90. req_size = int(row[2])
  91. req_size_std = float(row[3])
  92. req_time = float(row[4])
  93. req_std = float(row[5])
  94. # open invitation response size is +/- 1 byte
  95. resp_size = int(math.ceil(float(row[6])))
  96. resp_size_std = float(row[7])
  97. resp_time = float(row[8])
  98. resp_std = float(row[9])
  99. handle_time = float(row[10])
  100. handle_std = float(row[11])
  101. req_time, req_std = format (req_time, req_std)
  102. resp_time, resp_std = format (resp_time, resp_std)
  103. handle_time, handle_std = format (handle_time, handle_std)
  104. perf_in.extend([req_size, req_time, req_std, resp_size, resp_time, resp_std, handle_time, handle_std])
  105. break
  106. perfwriter.writerow(perf_in)
  107. perf.close()
  108. print("\nDone Tables.\nTable data output to: performance_stats.csv,\n")
  109. if __name__ == "__main__":
  110. sys.exit(main())