diff options
author | Peter Odding <peter@peterodding.com> | 2011-05-11 22:50:33 +0200 |
---|---|---|
committer | Peter Odding <peter@peterodding.com> | 2011-05-11 22:50:33 +0200 |
commit | f980d5d303a2d1009fc8cba87791b12938ac053f (patch) | |
tree | 919f9535b6a795048b901313a329915b7a917421 | |
parent | 18ad44c0091d65b6000415a7da4f500a364452d5 (diff) | |
download | vim-easytags-f980d5d303a2d1009fc8cba87791b12938ac053f.tar.gz |
Python script to analyze tags file size
-rwxr-xr-x | why-so-slow.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/why-so-slow.py b/why-so-slow.py new file mode 100755 index 0000000..ead62f2 --- /dev/null +++ b/why-so-slow.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + +''' +Determine which files are contributing the most to the size of a tags file. You +can specify the location of the tags file as a command line argument. If you +pass a numeric argument, no more than that many files will be reported. + +Author: Peter Odding <peter@peterodding.com> +Last Change: May 11, 2011 +URL: https://github.com/xolox/vim-easytags/blob/master/why-so-slow.py +''' + +import os, sys + +tagsfile = '~/.vimtags' +topfiles = 10 + +for arg in sys.argv[1:]: + if os.path.isfile(arg): + tagsfile = arg + else: + topfiles = int(arg) + +infile = open(os.path.expanduser(tagsfile)) +counters = {} + +for line in infile: + fields = line.split('\t') + filename = fields[1] + counters[filename] = counters.get(filename, 0) + len(line) +infile.close() + +sortedfiles = sorted([(s, n) for (n, s) in counters.iteritems()], reverse=True) +for filesize, filename in sortedfiles[:topfiles]: + if filename.startswith(os.environ['HOME']): + filename = filename.replace(os.environ['HOME'], '~') + print '%i KB - %s' % (filesize / 1024, filename) + +# vim: ts=2 sw=2 et |