aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Odding <peter@peterodding.com>2011-05-11 22:50:33 +0200
committerPeter Odding <peter@peterodding.com>2011-05-11 22:50:33 +0200
commitf980d5d303a2d1009fc8cba87791b12938ac053f (patch)
tree919f9535b6a795048b901313a329915b7a917421
parent18ad44c0091d65b6000415a7da4f500a364452d5 (diff)
downloadvim-easytags-f980d5d303a2d1009fc8cba87791b12938ac053f.tar.gz
Python script to analyze tags file size
-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