import re
import matplotlib.pyplot as plt
import numpy as np
log_file = "net8.0\output.log" # 替換為實(shí)際日志文件路徑
latencies = []
pattern = re.compile(r"Audit Prompt End, latency: (\d+)")
with open(log_file, "r", encoding="utf-8") as f:
for line in f:
match = pattern.search(line)
if match:
latencies.append(int(match.group(1)))
if not latencies:
print("未找到任何 latency 數(shù)據(jù)")
exit(0)
# 打印統(tǒng)計(jì)數(shù)據(jù)
latencies_np = np.array(latencies)
print(f"總數(shù): {len(latencies)}")
print(f"平均值: {latencies_np.mean():.2f} ms")
print(f"最大值: {latencies_np.max()} ms")
print(f"最小值: {latencies_np.min()} ms")
print(f"中位數(shù): {np.median(latencies_np):.2f} ms")
print(f"標(biāo)準(zhǔn)差: {latencies_np.std():.2f} ms")
# 分桶
bins = list(range(0, max(latencies) + 100, 100))
counts, edges, patches = plt.hist(latencies, bins=bins, edgecolor='black')
plt.xlabel('Latency (ms)')
plt.ylabel('Count')
plt.title('Audit Prompt End Latency Distribution')
plt.grid(axis='y')
plt.tight_layout()
# 在每個(gè)柱子上方標(biāo)注數(shù)量
for count, edge in zip(counts, edges[:-1]):
plt.text(edge + 50, count, str(int(count)), ha='center', va='bottom')
plt.show()