Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-20 07:59:01

0001 #!/bin/env python
0002 
0003 import os
0004 import re
0005 
0006 from pandalogger import logger_config
0007 
0008 logdir = logger_config.daemon["logdir"]
0009 
0010 # collect data
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 # get average and longest
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 # show average
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 # show longest methods
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