File indexing completed on 2026-04-20 07:59:01
0001
0002
0003 import os
0004 import re
0005
0006 from pandalogger import logger_config
0007
0008 logdir = logger_config.daemon["logdir"]
0009
0010
0011 data = dict()
0012 with open(os.path.join(logdir, "panda-db_proxy_pool.log")) as f:
0013 for line in f:
0014 m = re.search("<method=([^>]+)> release lock .* (\d+\.\d+) ", line)
0015 if m is not None:
0016 method = m.group(1)
0017 exeTime = float(m.group(2))
0018 if method not in data:
0019 data[method] = []
0020 data[method].append(exeTime)
0021
0022 nS = 20
0023 nL = 20
0024
0025
0026 lData = dict()
0027 aData = dict()
0028 for method, exeTimes in data.items():
0029 exeTimes.sort()
0030 exeTimes.reverse()
0031 for exeTime in exeTimes[:nL]:
0032 if exeTime not in lData:
0033 lData[exeTime] = set()
0034 lData[exeTime].add(method)
0035 ave = sum(exeTimes) / float(len(exeTimes))
0036 if ave not in aData:
0037 aData[ave] = []
0038 aData[ave].append(method)
0039
0040
0041 aveList = sorted(aData.keys())
0042 aveList.reverse()
0043
0044 print
0045 print(f"Execution time summary : top {nS}")
0046 print(" average max n_call method")
0047 print("-------------------------------------------------")
0048 i = 0
0049 escape = False
0050 for ave in aveList:
0051 for method in aData[ave]:
0052 print(f"{ave:8.2f} {max(data[method]):8.2f} {len(data[method]):8d} {method}")
0053 i += 1
0054 if i >= nS:
0055 escape = True
0056 break
0057 if escape:
0058 break
0059
0060
0061 longList = sorted(lData.keys())
0062 longList.reverse()
0063
0064 print
0065 print(f"Long execution method : top {nL}")
0066 print(" method time")
0067 print("-------------------------------------------------")
0068 i = 0
0069 escape = False
0070 for val in longList:
0071 for method in lData[val]:
0072 print(f" {method:30} {val:8.2f}")
0073 i += 1
0074 if i >= nL:
0075 escape = True
0076 break
0077 if escape:
0078 break