update scripts
This commit is contained in:
48
sims/vcs/scripts/runtime_fast.py
Normal file
48
sims/vcs/scripts/runtime_fast.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import re
|
||||
import argparse
|
||||
|
||||
def parse_log(file_path):
|
||||
# Compile regular expressions for the required substrings and format
|
||||
pc_line_pattern = re.compile(r"^\s+(\d+):.*?PC=0x([\da-f]+).*?instr=(0xbe90a013|0xe0d0a013).*?$")
|
||||
commit_line_pattern = re.compile(r"^\s+(\d+):.*commit:.*$")
|
||||
# PC=0x800007a0, instr=0xbe90a013
|
||||
# Initialize dictionaries to track first and last occurrences
|
||||
beg_const = "0xbe90a013"
|
||||
end_const = "0xe0d0a013"
|
||||
occurrences = {
|
||||
beg_const: {"first": None, "last": None},
|
||||
end_const: {"first": None, "last": None}
|
||||
}
|
||||
# pc = {
|
||||
# "0xbe90a013": None,
|
||||
# "0xe0d0a013": None
|
||||
# }
|
||||
|
||||
with open(file_path, 'r') as log_file:
|
||||
for line in log_file:
|
||||
match = pc_line_pattern.search(line)
|
||||
if match:
|
||||
timestamp = int(match.group(1))
|
||||
pc_value = match.group(2)
|
||||
data_value = match.group(3)
|
||||
|
||||
if occurrences[data_value]["first"] is None:
|
||||
occurrences[data_value]["first"] = timestamp
|
||||
occurrences[data_value]["last"] = timestamp
|
||||
|
||||
return occurrences
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Set up command-line argument parsing
|
||||
parser = argparse.ArgumentParser(description="Parse log file for specific substrings and their timestamps.")
|
||||
parser.add_argument("file_path", help="Path to the log file to parse")
|
||||
|
||||
# Parse command-line arguments
|
||||
args = parser.parse_args()
|
||||
|
||||
# Parse the log file and print the result
|
||||
result = parse_log(args.file_path)
|
||||
# print(result)
|
||||
|
||||
print(f"{int((result['0xe0d0a013']['last'] - result['0xbe90a013']['first']) * 0.4)}")
|
||||
|
||||
Reference in New Issue
Block a user