Skip to content

Instantly share code, notes, and snippets.

@spin6lock
Last active October 14, 2015 01:08
Show Gist options
  • Save spin6lock/4284242 to your computer and use it in GitHub Desktop.
Save spin6lock/4284242 to your computer and use it in GitHub Desktop.

Revisions

  1. spin6lock revised this gist Dec 21, 2012. 2 changed files with 65 additions and 59 deletions.
    59 changes: 0 additions & 59 deletions obj_dump_analyze.py
    Original file line number Diff line number Diff line change
    @@ -1,59 +0,0 @@
    #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)
    65 changes: 65 additions & 0 deletions snapshot_analyze.py
    Original 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)
  2. spin6lock renamed this gist Dec 14, 2012. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. spin6lock created this gist Dec 14, 2012.
    59 changes: 59 additions & 0 deletions obj_dump_analyze
    Original 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)