extract_ramen_stats.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import sys
  2. import re
  3. def extract_init_time(file_contents):
  4. lines = file_contents.split('\n')
  5. init_time = None
  6. for line in lines:
  7. if line.startswith("InitTime:"):
  8. init_time_str = line.split(":")[1].strip()
  9. init_time = float(init_time_str.split()[0])
  10. break
  11. return init_time
  12. def extract_time_accesses(file_contents):
  13. time_accesses_section = re.search(r'time accesses:\s+([\d.]+) ms', file_contents)
  14. if time_accesses_section:
  15. time_accesses = float(time_accesses_section.group(1))
  16. return time_accesses
  17. else:
  18. return None
  19. def extract_max_bytes_sent(file_contents):
  20. communication_section = re.search(r'communication accesses: {(.*?)}', file_contents, re.DOTALL)
  21. if communication_section:
  22. communication_stats = communication_section.group(1)
  23. num_bytes_sent = [int(match.group(1)) for match in re.finditer(r'num_bytes_sent: (\d+)', communication_stats)]
  24. max_bytes_sent = max(num_bytes_sent)
  25. return max_bytes_sent
  26. else:
  27. return None
  28. def extract_max_time_accesses(file_contents):
  29. max_time_accesses_section = re.search(r'Maximum time accesses: (\d+\.\d+) ms', file_contents)
  30. if max_time_accesses_section:
  31. max_time_accesses = float(max_time_accesses_section.group(1))
  32. return max_time_accesses
  33. else:
  34. return None
  35. def extract_max_of_time_accesses(file_contents):
  36. max_of_time_accesses_section = re.search(r'Maximum of time accesses: (\d+\.\d+) ms', file_contents)
  37. if max_of_time_accesses_section:
  38. max_of_time_accesses = float(max_of_time_accesses_section.group(1))
  39. return max_of_time_accesses
  40. else:
  41. return None
  42. def main():
  43. if len(sys.argv) != 2:
  44. print("Usage: python script.py <filename>")
  45. return
  46. filename = sys.argv[1]
  47. try:
  48. with open(filename, 'r') as file:
  49. file_contents = file.read()
  50. max_init_time = extract_init_time(file_contents)
  51. time_accesses = extract_time_accesses(file_contents)
  52. max_bytes_sent = extract_max_bytes_sent(file_contents)
  53. max_time_accesses = extract_max_time_accesses(file_contents)
  54. max_of_time_accesses = extract_max_of_time_accesses(file_contents)
  55. #if max_init_time is not None:
  56. # print("Maximum InitTime:", max_init_time, "ms")
  57. #else:
  58. # print("No InitTime found in the file.")
  59. #if time_accesses is not None:
  60. # print("Time Accesses:", time_accesses, "ms")
  61. # else:
  62. # print("No time accesses found in the file.")
  63. if max_bytes_sent is not None:
  64. print(max_bytes_sent)
  65. else:
  66. print("No communication stats found in the file.")
  67. if max_init_time is not None and time_accesses is not None:
  68. total_time = max_init_time + time_accesses
  69. print(total_time)
  70. else:
  71. print("Cannot calculate total time due to missing values.")
  72. except FileNotFoundError:
  73. print("File not found:", filename)
  74. if __name__ == "__main__":
  75. main()