Subject: 24.3; which-func-mode / python-mode == crazy slow

From: Dave Abrahams <[email-masked]>
Date: Tue, 26 Mar 2013 06:59:49 -0700

emacs -Q
M-x which-func-mode RET
visit this file:
https://github.com/boostorg/litre/blob/master/cplusplus.py
C-x C-v cplusplus.py RET

Notice it being really slow.  CPU profile report attached.

In GNU Emacs 24.3.1 (x86_64-apple-darwin11.4.2, Carbon Version 1.6.0 AppKit 1138.51)
 of 2013-03-08 on atago.hsd1.ma.comcast.net
Windowing system distributor `Apple Inc.', version 10.9.0
Configured using:
 `configure '--with-mac'
 '--enable-mac-app=/Users/xin/Documents/emacs-mac-port/build'
 '--prefix=/Users/xin/Documents/emacs-mac-port/build''

Important settings:
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Python

Minor modes in effect:
  shell-dirtrack-mode: t
  recentf-mode: t
  diff-auto-refine-mode: t
  override-global-mode: t
  workgroups-mode: t
  me-minor-mode: t
  show-paren-mode: t
  server-mode: t
  global-auto-revert-mode: t
  display-time-mode: t
  delete-selection-mode: t
  tooltip-mode: t
  mac-mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-p C-p C-p C-p <C-return> C-p C-p C-p C-p C-p <return> 
C-n <return> C-n <return> C-n <return> C-n <return> 
C-n C-n C-n <return> C-n <return> C-n <return> C-n 
<return> C-n C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-e C-, C-a C-. <return> <return> 
<return> <return> <return> <return> <return> C-h m 
<C-return> C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n <C-return> C-h e f <return> C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-x C-k C-n 
<return> C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p <C-return> 
C-x b <right> <return> <tab> C-b C-b C-n C-p <tab> 
<tab> C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p 
<tab> <tab> <C-return> M-x r e p o r t <tab> u <tab> 
p <backspace> <return> C-g C-g M-! e m a c s 2 SPC 
- Q <return> M-: M-p C-k C-g <down-mouse-1> <mouse-1> 
C-h e f <return> C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-x C-b M-x w h i c h - f u 
n <tab> - <tab> <return> C-x b c p l u <return> C-x 
C-v <return> C-x C-v <return> C-x C-v <return> ' C-_ 
C-x C-v <return> C-x C-v <return> C-x C-v <return> 
M-x r e p o r t - u p <tab> <return> C-g C-g M-! m 
a i l q <return> M-! s u d o SPC m a i l q <return> 
M-! M-p <return> M-! M-p M-p <return> C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p M-x r e p o r t - u p <tab> 
<return>

Recent messages:
Quit [2 times]
(Shell command succeeded with no output)
Quit
Which-Function mode disabled
Auto-saving...done
Undo!
Quit [2 times]
postqueue: fatal: Queue report unavailable - mail system is down
postqueue: warning: Mail system is down -- accessing queue directly
Mail queue is empty [3 times]

Load-path shadows:
/Users/dave/.emacs.d/el-get/magit/.dir-locals hides /Users/dave/.emacs.d/el-get/el-get/.dir-locals
/Users/dave/.emacs.d/el-get/dwamacs/site-lisp/ediff-util hides /Applications/Emacs.app/Contents/Resources/lisp/vc/ediff-util
/Users/dave/.emacs.d/el-get/python/python hides /Applications/Emacs.app/Contents/Resources/lisp/progmodes/python
/Users/dave/.emacs.d/el-get/dwamacs/site-lisp/compile hides /Applications/Emacs.app/Contents/Resources/lisp/progmodes/compile
/Users/dave/.emacs.d/el-get/magit/.dir-locals hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/.dir-locals
/Users/dave/.emacs.d/el-get/dwamacs/site-lisp/ert hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/ert
/Users/dave/.emacs.d/el-get/dwamacs/site-lisp/ert-x hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/ert-x

Features:
(shadow sort mail-extr debug find-dired grep view magit-svn dired-aux
gnus-dired sh-script smie executable format-spec cal-menu calendar
cal-loaddefs man rect tabify table code-settings rst w3m-form mule-util
w3m-cookie w3m-bookmark w3m-tabmenu w3m-session thingatpt w3m browse-url
doc-view image-mode timezone w3m-hist w3m-fb bookmark-w3m w3m-ems
w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util hl-line shell
pcomplete compile vc-git python skeleton rx comint recentf tree-widget
profiler misearch multi-isearch magit-bisect magit-key-mode magit
ansi-color diff-mode log-edit ring pcvs-util add-log proof-site
proof-autoloads pg-vars page-ext ffap url-parse auth-source eieio
gnus-util mm-util mail-prsvr password-cache url-vars use-package
bind-key session-settings session system-type-darwin-theme osx-plist xml
.loaddefs yasnippet dropdown-list derived workgroups edmacro kmacro
initsplit byte-opt warnings advice advice-preload cus-edit wid-edit
find-func diminish el-get el-get-autoloads el-get-list-packages
el-get-notify help-mode el-get-dependencies el-get-build el-get-status
pp el-get-recipes el-get-byte-compile el-get-methods el-get-fossil
el-get-svn el-get-pacman el-get-github-zip el-get-github-tar
el-get-http-zip el-get-http-tar el-get-hg el-get-git-svn el-get-fink
el-get-emacswiki el-get-http el-get-emacsmirror el-get-github el-get-git
el-get-elpa package cl-macs gv el-get-darcs el-get-cvs el-get-bzr
el-get-brew el-get-builtin el-get-apt-get el-get-custom el-get-core
autoload help-fns bytecomp byte-compile cconv cl cl-lib dired-x dired
easy-mmode jka-compr info easymenu which-func imenu paren server ido
autorevert time delsel cus-start cus-load elhome time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel mac-win tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment lisp-mode register
page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote multi-tty make-network-process emacs)