aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xwhy-so-slow.py39
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