Last active
October 14, 2015 01:08
-
-
Save spin6lock/4284242 to your computer and use it in GitHub Desktop.
Revisions
-
spin6lock revised this gist
Dec 21, 2012 . 2 changed files with 65 additions and 59 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,59 +0,0 @@ This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,65 @@ #encoding:utf8 def analyze(filename): statics = {} with open(filename) as fh: for line in fh: infos = line.split() obj_name, obj_size, _, refs = infos[0:4] statics[obj_name] = [int(refs), int(obj_size)] return statics def gen_diff(staticsA, staticsB): diff = {} new = {} for obj_name, recordB in staticsB.iteritems(): if not staticsA.has_key(obj_name): new[obj_name] = recordB continue recordA = staticsA[obj_name] if recordB != recordA: diff[obj_name] = [recordB[0] - recordA[0], recordB[1] - recordA[1]] return diff, new def gen_ref_report(diff): for obj_name in sorted(diff.iterkeys()): record = diff[obj_name] ref, size = record if (ref > 0): print "obj ", obj_name, "amount increase:", str(ref) def gen_size_report(diff): for obj_name in sorted(diff.iterkeys()): record = diff[obj_name] ref, size = record if (size > 0): print "obj ", obj_name, "size increase:", str(size) def gen_new_report(new): for obj_name in sorted(new.iterkeys()): record = new[obj_name] print "new obj:", obj_name, " ref:", record[0], " size:", record[1] def print_time_diff(filename1, filename2): import os.path, datetime timestamp1 = os.path.getmtime(filename1) timestamp2 = os.path.getmtime(filename2) delta = datetime.timedelta(seconds = (timestamp2 - timestamp1)) print "=" * 10, "In", delta, "=" * 10 def main(filename1, filename2): print_time_diff(filename1, filename2) staticsA = analyze(filename1) staticsB = analyze(filename2) diff, new = gen_diff(staticsA, staticsB) gen_ref_report(diff) gen_size_report(diff) gen_new_report(new) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="gen diff from two obj_dump file") parser.add_argument("pathA", metavar="PATHA", type=str) parser.add_argument("pathB", metavar="PATHB", type=str) args = parser.parse_args() main(args.pathA, args.pathB) -
spin6lock renamed this gist
Dec 14, 2012 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
spin6lock created this gist
Dec 14, 2012 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,59 @@ #encoding:utf8 def analyze(filename): statics = {} with open(filename) as fh: for line in fh: infos = line.split() obj_name, obj_size, _, refs = infos[0:4] statics[obj_name] = [int(refs), int(obj_size)] return statics def gen_diff(staticsA, staticsB): diff = {} new = {} for obj_name, recordB in staticsB.iteritems(): if not staticsA.has_key(obj_name): new[obj_name] = recordB continue recordA = staticsA[obj_name] if recordB != recordA: diff[obj_name] = [recordB[0] - recordA[0], recordB[1] - recordA[1]] for obj_name, record in diff.iteritems(): ref, size = record if (ref > 0): print "obj ", obj_name, "amount increase:", str(ref) def gen_size_report(diff): for obj_name, record in diff.iteritems(): ref, size = record if (size > 0): print "obj ", obj_name, "size increase:", str(size) def gen_new_report(new): for obj_name, record in new.iteritems(): print "new obj:", obj_name, " ref:", record[0], " size:", record[1] def print_time_diff(filename1, filename2): import os.path, datetime timestamp1 = os.path.getmtime(filename1) timestamp2 = os.path.getmtime(filename2) delta = datetime.timedelta(seconds = (timestamp2 - timestamp1)) print "=" * 10, "In", delta, "=" * 10 def main(filename1, filename2): print_time_diff(filename1, filename2) staticsA = analyze(filename1) staticsB = analyze(filename2) diff, new = gen_diff(staticsA, staticsB) gen_ref_report(diff) gen_size_report(diff) gen_new_report(new) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="gen diff from two obj_dump file") parser.add_argument("pathA", metavar="PATHA", type=str) parser.add_argument("pathB", metavar="PATHB", type=str) args = parser.parse_args() main(args.pathA, args.pathB)