|
@@ -0,0 +1,70 @@
|
|
|
+import re
|
|
|
+import sys
|
|
|
+
|
|
|
+def parse_stats(input_string):
|
|
|
+ # Regular expressions to extract relevant stats
|
|
|
+ heapsize_pattern = r'heapsize: (\d+)'
|
|
|
+ insert_stats_pattern = r'===== Insert Stats =====\n([\s\S]*?)\n\n'
|
|
|
+ extract_stats_pattern = r'===== Extract Min Stats =====\n([\s\S]*?)(?:\n\n|\Z)'
|
|
|
+ optimized_pattern = r'is_optimized: (\d)'
|
|
|
+
|
|
|
+ heapsize = re.search(heapsize_pattern, input_string).group(1)
|
|
|
+ insert_stats = re.search(insert_stats_pattern, input_string).group(1)
|
|
|
+
|
|
|
+ # Handling the case when "Extract Min Stats" is not present
|
|
|
+ extract_stats_match = re.search(extract_stats_pattern, input_string)
|
|
|
+ if extract_stats_match:
|
|
|
+ extract_stats = extract_stats_match.group(1)
|
|
|
+ else:
|
|
|
+ extract_stats = ""
|
|
|
+
|
|
|
+ optimized = re.search(optimized_pattern, input_string).group(1)
|
|
|
+
|
|
|
+ # Extracting insert and extract statistics
|
|
|
+ insert_stat_values = re.findall(r'(\d+) messages sent\n(\d+) message bytes sent\n(\d+) Lamport clock \(latencies\)\n(\d+) local AES operations\n(\d+) milliseconds wall clock time', insert_stats)
|
|
|
+ extract_stat_values = re.findall(r'(\d+) messages sent\n(\d+) message bytes sent\n(\d+) Lamport clock \(latencies\)\n(\d+) local AES operations\n(\d+) milliseconds wall clock time', extract_stats)
|
|
|
+
|
|
|
+ return {
|
|
|
+ "heapsize": heapsize,
|
|
|
+ "is_optimized": optimized,
|
|
|
+ "insert_stats": insert_stat_values,
|
|
|
+ "extract_stats": extract_stat_values
|
|
|
+ }
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ if len(sys.argv) != 2:
|
|
|
+ print("Usage: python extract_data.py <filename>")
|
|
|
+ sys.exit(1)
|
|
|
+
|
|
|
+ filename = sys.argv[1]
|
|
|
+
|
|
|
+ try:
|
|
|
+ with open(filename, "r") as file:
|
|
|
+ input_string = file.read()
|
|
|
+ except FileNotFoundError:
|
|
|
+ print(f"Error: File '{filename}' not found.")
|
|
|
+ sys.exit(1)
|
|
|
+
|
|
|
+ parsed_data = parse_stats(input_string)
|
|
|
+
|
|
|
+ insert_stats_wallclock = 0
|
|
|
+ insert_stats_message_bytes = 0
|
|
|
+ if parsed_data["insert_stats"]:
|
|
|
+ stat = parsed_data["insert_stats"][0]
|
|
|
+ insert_stats_wallclock = stat[4]
|
|
|
+ insert_stats_message_bytes = stat[1]
|
|
|
+
|
|
|
+ extract_stats_wallclock = 0
|
|
|
+ extract_stats_message_bytes = 0
|
|
|
+
|
|
|
+ if parsed_data["extract_stats"]:
|
|
|
+ stat = parsed_data["extract_stats"][0]
|
|
|
+ extract_stats_wallclock = stat[4]
|
|
|
+ extract_stats_message_bytes = stat[1]
|
|
|
+
|
|
|
+ print(parsed_data["heapsize"])
|
|
|
+ print(parsed_data["is_optimized"])
|
|
|
+ print(insert_stats_wallclock)
|
|
|
+ print(insert_stats_message_bytes)
|
|
|
+ print(extract_stats_wallclock)
|
|
|
+ print(extract_stats_message_bytes)
|