emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ELPA-diffs] /srv/bzr/emacs/elpa r188: memory-usage (memory-usage-find-l


From: Stefan Monnier
Subject: [ELPA-diffs] /srv/bzr/emacs/elpa r188: memory-usage (memory-usage-find-large-variables): New command.
Date: Thu, 22 Mar 2012 12:31:33 -0400
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 188
author: Ami Fischman <address@hidden>
committer: Stefan Monnier <address@hidden>
branch nick: elpa
timestamp: Thu 2012-03-22 12:31:33 -0400
message:
  memory-usage (memory-usage-find-large-variables): New command.
modified:
  packages/memory-usage/memory-usage.el
=== modified file 'packages/memory-usage/memory-usage.el'
--- a/packages/memory-usage/memory-usage.el     2012-03-22 16:27:22 +0000
+++ b/packages/memory-usage/memory-usage.el     2012-03-22 16:31:33 +0000
@@ -141,5 +141,40 @@
     (insert "\n"))
   (goto-char (point-min)))
 
+(defun memory-usage-find-large-variables ()
+  "Find variables whose printed representation takes over 100KB."
+  (interactive)
+  (let ((min-size (* 100 1024)))
+    (pop-to-buffer "*Memory Explorer*")
+    (delete-region (point-min) (point-max))
+    ;; First find large global variables.
+    (mapatoms
+     (lambda (sym)
+       (let ((size (or (and (boundp sym)
+                            (length (prin1-to-string (symbol-value sym))))
+                       0)))
+         (when (> size min-size)
+           (insert (format "%d\tGlobal\t%s\n"
+                           size
+                           (symbol-name sym)))))))
+    ;; Second find large buffer-local variables.
+    (mapc
+     (lambda (buffer)
+       (let ((holder ""))
+         (with-current-buffer buffer
+           (mapc
+            (lambda (var-cons)
+              (let ((size (or (and (consp var-cons)
+                                   (length (prin1-to-string (cdr var-cons))))
+                              0)))
+                (if (> size min-size)
+                    (setq holder (format "%d\t%s\t%s\n"
+                                         size (buffer-name buffer)
+                                         (symbol-name (car var-cons)))))))
+            (buffer-local-variables)))
+         (insert holder)))
+     (buffer-list))
+    (sort-numeric-fields 1 (point-min) (point-max))))
+
 (provide 'memory-usage)
 ;;; memory-usage.el ends here


reply via email to

[Prev in Thread] Current Thread [Next in Thread]