Commit e467e5da authored by lkx33's avatar lkx33

init

parents
__pycache__
import os
import time
import datetime
import math
import numpy as np
from reader import initData
# def sendReport():
# 读取发送时间
# def sendReplyReport():
# 读取msgReply
def formatData(sortType=0):
# 先获得初始化数据,sortType是要根据第几个元素排序返回数据
# 0为logId,1为发送时间,2为reply时间,3为接收时间,4reply延迟,5接收延迟
logData = []
source = initData()
for line in source:
logLine = []
logID = line[0]
sendTime = line[1]
replyTime = line[2]
receiveTime = line[3]
# 格式化时间
time1 = datetime.datetime.strptime(
sendTime, "%Y-%m-%dT%H:%M:%S.%f%z")
time2 = datetime.datetime.strptime(
replyTime, "%Y-%m-%dT%H:%M:%S.%f%z")
time3 = datetime.datetime.strptime(
receiveTime, "%Y-%m-%dT%H:%M:%S.%f%z")
# 转换为时间戳
stamp1 = time.mktime(time1.timetuple())*1000+time1.microsecond/1000
stamp2 = time.mktime(time2.timetuple())*1000+time2.microsecond/1000
stamp3 = time.mktime(time3.timetuple())*1000+time3.microsecond/1000
# 计算延迟
replyLag = stamp2-stamp1
msgLag = stamp3-stamp1
logLine = [logID, stamp1, stamp2, stamp3, replyLag, msgLag]
logData.append(logLine)
# print(logData)
# print(sorted(logData, key=lambda x: x[3]))
logData.sort(key=lambda x: x[sortType])
return logData
# def timeReport(sortType=1):
# # 返回时间列表(x坐标),默认为发送时间
# data = formatData(sortType)
# time = [i[sortType] for i in data]
# return time
def lagReport(sortType=5):
# 读取msg收到的时间
data = formatData(sortType)
lagData = []
count = 0
line90 = 0
line95 = 0
line99 = 0
for i in data:
lagData.append(i[sortType])
# 格式化时间
# dateArray1 = datetime.datetime.fromtimestamp(i[1]/1000)
# dateArray2 = datetime.datetime.fromtimestamp(i[2]/1000)
# dateArray3 = datetime.datetime.fromtimestamp(i[3]/1000)
# time1 = dateArray1.strftime("%Y-%m-%d %H:%M:%S.%f")
# time2 = dateArray1.strftime("%Y-%m-%d %H:%M:%S.%f")
# print('logID:', i[0], '发送时间:', dateArray1, 'reply时间:', dateArray2,
# '接收时间:', dateArray3, 'reply耗时(ms):', i[4], '接收耗时(ms):', i[5])
count = len(lagData)
line90 = math.floor(0.9*count)
line95 = math.floor(0.95*count)
line99 = math.floor(0.99*count)
# print(lagData)
print('共', count, '条数据')
print('最小延迟:', np.amin(lagData))
print('平均延迟:', np.mean(lagData))
print('最大延迟:', np.amax(lagData))
print('90%:', lagData[line90-1])
print('95%:', lagData[line95-1])
print('99%:', lagData[line99-1])
print('-----------------------')
return lagData
# lagReport()
# def errorReport():
# 读取错误
import datetime
import math
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import ticker as tk
from matplotlib import dates as dt
from analyzer import formatData, lagReport
def chartByPercent():
# 绘制图表(延迟从小到大走向)
y1 = lagReport(4)
y2 = lagReport(5)
x = np.arange(1/len(y1), 1+1/len(y1), 1/len(y1))
plt.title("Message receive log")
plt.xlabel("Percentage")
plt.ylabel("Lag")
plt.xlim(0, None) # 设置起点
plt.xticks(range(0, 101, 10)) # 设置x轴间隔
plt.gca().xaxis.set_major_formatter(tk.FormatStrFormatter('%.0f %%')) # 设置x轴格式
plt.gca().yaxis.set_major_formatter(tk.FormatStrFormatter('%.1f ms')) # 设置y轴格式
plt.plot(x*100, y2, label='receive')
plt.plot(x*100, y1, label='reply')
plt.text(90, y2[math.floor(0.9*len(y2))-1], "%0.2fms \n90%%" % y2[math.floor(0.9*len(y2))-1], fontsize=10, color="r", style="italic",
weight="light", verticalalignment='center', horizontalalignment='center', rotation=0)
plt.legend() # 显示标注
plt.show()
def chartByTime():
# 绘制图表(时间走向)
logData = formatData(1) # 获取日志,按照发送时间排序
time = [i[1] for i in logData] # 获取时间
y1 = [i[4] for i in logData] # 获取reply
y2 = [i[5] for i in logData] # 获取receive
# x = [datetime.datetime.fromtimestamp(
# t/1000).strftime("%Y-%m-%d %H:%M:%S.%f") for t in time]
x = [datetime.datetime.fromtimestamp(t/1000) for t in time]
plt.title("Message receive log")
plt.xlabel("SendTime")
plt.ylabel("Lag")
# plt.xlim(0, None)
# plt.xticks(range(0, 10, 1))
plt.gca().xaxis.set_major_formatter(dt.DateFormatter('%H:%M:%S'))
plt.gca().yaxis.set_major_formatter(tk.FormatStrFormatter('%.1f ms'))
plt.plot(x, y2, label='receive')
plt.plot(x, y1, label='reply')
plt.legend() # 显示标注
plt.show()
chartByPercent()
# chartByTime()
113242168981721088 2021-04-09T11:43:57.002911+08:00 2021-04-09T11:43:57.082412+08:00
113242169422123008 2021-04-09T11:43:57.120087+08:00 2021-04-09T11:43:57.191507+08:00
113242173134082048 2021-04-09T11:43:58.004714+08:00 2021-04-09T11:43:58.058052+08:00
113242173649981440 2021-04-09T11:43:58.120769+08:00 2021-04-09T11:43:58.199444+08:00
113242177366134784 2021-04-09T11:43:59.005378+08:00 2021-04-09T11:43:59.05548+08:00
113242177856868352 2021-04-09T11:43:59.124919+08:00 2021-04-09T11:43:59.166122+08:00
113242168608428032 2021-04-09T11:43:56.921894+08:00 2021-04-09T11:43:56.994145+08:00
113242169489231872 2021-04-09T11:43:57.120364+08:00 2021-04-09T11:43:57.191537+08:00
113242172941144064 2021-04-09T11:43:57.927456+08:00 2021-04-09T11:43:58.033104+08:00
113242173717090304 2021-04-09T11:43:58.120806+08:00 2021-04-09T11:43:58.199444+08:00
113242177261277184 2021-04-09T11:43:58.931195+08:00 2021-04-09T11:43:59.055451+08:00
113242177915588608 2021-04-09T11:43:59.124973+08:00 2021-04-09T11:43:59.214147+08:00
113242168671342592 2021-04-09T11:43:56.922348+08:00 2021-04-09T11:43:56.994145+08:00
113242169032052736 2021-04-09T11:43:57.003009+08:00 2021-04-09T11:43:57.082492+08:00
113242173008252928 2021-04-09T11:43:57.927544+08:00 2021-04-09T11:43:58.033106+08:00
113242173268299776 2021-04-09T11:43:58.004756+08:00 2021-04-09T11:43:58.079105+08:00
113242177324191744 2021-04-09T11:43:58.931303+08:00 2021-04-09T11:43:59.055701+08:00
113242177424855040 2021-04-09T11:43:59.005552+08:00 2021-04-09T11:43:59.078238+08:00
113242168608428032 2021-04-09T11:43:56.994145+08:00
113242168671342592 2021-04-09T11:43:56.994173+08:00
113242172941144064 2021-04-09T11:43:58.005519+08:00
113242173008252928 2021-04-09T11:43:58.033101+08:00
113242177261277184 2021-04-09T11:43:59.024437+08:00
113242177324191744 2021-04-09T11:43:59.055448+08:00
113242168981721088 2021-04-09T11:43:57.082337+08:00
113242169032052736 2021-04-09T11:43:57.082359+08:00
113242173134082048 2021-04-09T11:43:58.058051+08:00
113242173268299776 2021-04-09T11:43:58.078982+08:00
113242177366134784 2021-04-09T11:43:59.055664+08:00
113242177424855040 2021-04-09T11:43:59.078214+08:00
113242169422123008 2021-04-09T11:43:57.191459+08:00
113242169489231872 2021-04-09T11:43:57.19149+08:00
113242173649981440 2021-04-09T11:43:58.199609+08:00
113242173717090304 2021-04-09T11:43:58.199717+08:00
113242177856868352 2021-04-09T11:43:59.166322+08:00
113242177915588608 2021-04-09T11:43:59.186449+08:00
2021-04-09T11:43:56.921894+08:00
2021-04-09T11:43:56.922348+08:00
2021-04-09T11:43:57.927456+08:00
2021-04-09T11:43:57.927544+08:00
2021-04-09T11:43:58.931195+08:00
2021-04-09T11:43:58.931303+08:00
2021-04-09T11:43:57.002911+08:00
2021-04-09T11:43:57.003009+08:00
2021-04-09T11:43:58.004714+08:00
2021-04-09T11:43:58.004756+08:00
2021-04-09T11:43:59.005378+08:00
2021-04-09T11:43:59.005552+08:00
2021-04-09T11:43:57.120087+08:00
2021-04-09T11:43:57.120364+08:00
2021-04-09T11:43:58.120769+08:00
2021-04-09T11:43:58.120806+08:00
2021-04-09T11:43:59.124919+08:00
2021-04-09T11:43:59.124973+08:00
This source diff could not be displayed because it is too large. You can view the blob instead.
import os
def readFile(fileName):
# 查询并读取文件
data = []
for root, dirs, files in os.walk('./log/'):
for file in files:
if fileName in file:
with open(os.path.join('./log/', file)) as f:
lines = f.readlines()
for line in lines:
data.append(line.split())
return data
def initData():
# 初始化数据
receiveLog = readFile('ChatReceive')
replyLog = readFile('Reply')
for i in receiveLog:
for j in replyLog:
if i[0] == j[0]:
i.insert(2, j[1])
break
# print(receiveLog)
return receiveLog
initData()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment