autodebug diff tool
This commit is contained in:
Родитель
386363a361
Коммит
84def0e0ce
|
@ -0,0 +1,60 @@
|
|||
'''
|
||||
A semi-smart diff for autodebugger logs.
|
||||
|
||||
Run it with filenames of two autodebugger logs as parameters
|
||||
'''
|
||||
|
||||
import os, sys
|
||||
|
||||
|
||||
def process_line(line):
|
||||
#AD:2041,0.900000
|
||||
if not line.startswith('AD:'): return
|
||||
line = line.split(':')[1]
|
||||
num, val = line.split(',')
|
||||
return [int(num), float(val)]
|
||||
|
||||
a = open(sys.argv[1], 'r').readlines()
|
||||
b = open(sys.argv[2], 'r').readlines()
|
||||
MIN = 0.0001 if len(sys.argv) < 4 else sys.argv[3]
|
||||
|
||||
ai = 0
|
||||
bi = 0
|
||||
maxx = max(len(a), len(b))
|
||||
|
||||
while max(ai, bi) < maxx:
|
||||
while 1:
|
||||
av = process_line(a[ai])
|
||||
if av: break
|
||||
ai += 1
|
||||
while 1:
|
||||
bv = process_line(b[bi])
|
||||
if bv: break
|
||||
bi += 1
|
||||
#print 'curr:', ai, bi, av, bv
|
||||
# Find the nearest matching num, if not already matched
|
||||
if not av[0] == bv[0]:
|
||||
tai = ai+1
|
||||
tbi = bi+1
|
||||
while 1:
|
||||
tav = process_line(a[tai])
|
||||
tbv = process_line(b[tbi])
|
||||
#print 'seek:', tai, tbi, tav, tbv
|
||||
if tav and tav[0] == bv[0]:
|
||||
ai = tai
|
||||
av = tav
|
||||
break
|
||||
elif tbv and tbv[0] == av[0]:
|
||||
bi = tbi
|
||||
bv = tbv
|
||||
break
|
||||
tai += 1
|
||||
tbi += 1
|
||||
|
||||
assert av[0] == bv[0]
|
||||
diff = abs(av[1] - bv[1])
|
||||
if diff > MIN:
|
||||
print '<<%d %d>> %d : %.5f' % (ai, bi, av[0], diff)
|
||||
ai += 1
|
||||
bi += 1
|
||||
|
Загрузка…
Ссылка в новой задаче