blob: 0528259dce37cc36e6d2f84459c6cf431bb4182f [file] [log] [blame]
#!/usr/bin/env python2
#
# Analyze allocator logs and write total-bytes-in-use after every
# operation to stdout. The output can be gnuplotted as:
#
# $ python log2gnuplot.py </tmp/duk-alloc-log.txt >/tmp/output.txt
# $ gnuplot
# > plot "output.txt" with lines
#
import os
import sys
def main():
allocated = 0
for line in sys.stdin:
line = line.strip()
parts = line.split(' ')
# A ptr/NULL/FAIL size
# F ptr/NULL size
# R ptr/NULL oldsize ptr/NULL/FAIL newsize
# Note: ajduk doesn't log oldsize (uses -1 instead)
if parts[0] == 'A':
if parts[1] != 'NULL' and parts[1] != 'FAIL':
allocated += long(parts[2])
elif parts[0] == 'F':
allocated -= long(parts[2])
elif parts[0] == 'R':
allocated -= long(parts[2])
if parts[3] != 'NULL' and parts[3] != 'FAIL':
allocated += long(parts[4])
print(allocated)
print(allocated)
if __name__ == '__main__':
main()