Subject: bug#20961: 24.5; `dired-jump' quite slow under Cygwin Emacs

From: Sebastien Vauban <[email-masked]>
Date: Thu, 02 Jul 2015 12:27:11 +0200

Now that profiling works under Cygwin Emacs (thanks Ken and Eli!), I can
report the following when playing a couple of seconds with Dired-jump
(which I find much slower on Cygwin Emacs than on Windows Emacs).

--8<---------------cut here---------------start------------->8---
- ...                                                         6440  59%
 - find-file                                                  6315  58%
  - apply                                                     6315  58%
   - ad-Advice-find-file                                      6315  58%
    - let                                                     6315  58%
     - let                                                    6315  58%
      - setq                                                  6315  58%
       - with-no-warnings                                     6315  58%
        - funcall                                             6315  58%
         - #<compiled 0x4018ad5f>                             6315  58%
          - find-file-noselect                                6315  58%
           - run-hook-with-args-until-success                 6315  58%
            - dired-noselect                                  6315  58%
             - dired-internal-noselect                        6315  58%
              - dired-readin                                  6311  58%
               - dired-readin-insert                          6290  57%
                - dired-insert-directory                      6290  57%
                 - insert-directory                           6289  57%
                  - apply                                     6289  57%
                   - ls-lisp--insert-directory                6289  57%
                    - get-free-disk-space                     6288  57%
                     - process-file                           6288  57%
                        apply                                 6288  57%
                    + byte-code                                  1   0%
                 + dired-insert-set-properties                   1   0%
               + run-hooks                                      21   0%
              + create-file-buffer                               3   0%
              + dired-mode                                       1   0%
   Automatic GC                                                125   1%
- command-execute                                             4370  40%
 - apply                                                      4370  40%
  - ad-Advice-command-execute                                 4370  40%
   - let                                                      4370  40%
    - setq                                                    4370  40%
     - with-no-warnings                                       4370  40%
      - funcall                                               4370  40%
       - #<compiled 0x401aa6bf>                               4370  40%
        - call-interactively                                  4370  40%
         - helm-M-x                                           4354  40%
          - command-execute                                   4354  40%
           - apply                                            4354  40%
            - ad-Advice-command-execute                       4354  40%
             - let                                            4354  40%
              - setq                                          4354  40%
               - with-no-warnings                             4354  40%
                - funcall                                     4354  40%
                 - #<compiled 0x401aa6bf>                     4354  40%
                  - call-interactively                        4354  40%
                   - byte-code                                4351  39%
                    - helm-M-x-read-extended-command          4351  39%
                     - helm-comp-read                         4351  39%
                      - helm                                  4351  39%
                       - apply                                4351  39%
                        - helm                                4351  39%
                         - apply                              4351  39%
                          - helm-internal                     4351  39%
                           - funcall                          4351  39%
                            - #<compiled 0x180e4dbe5>         4351  39%
                             - helm-read-pattern-maybe        4330  39%
                              + read-from-minibuffer           323   2%
                              + helm-update                      4   0%
                             + helm-initialize                  19   0%
                             + helm-display-buffer               2   0%
                   + profiler-report                             3   0%
         + diredp-previous-line                                  7   0%
         + diredp-next-line                                      5   0%
+ redisplay_internal (C function)                               45   0%
+ timer-event-handler                                           21   0%
--8<---------------cut here---------------end--------------->8---

In GNU Emacs 24.5.1 (x86_64-unknown-cygwin)
 of 2015-06-23 on desktop-new
Windowing system distributor `Microsoft Corp.', version 6.3.9600
Configured using:
 `configure --srcdir=/home/kbrown/src/cygemacs/emacs-24.5-2.x86_64/src/emacs-24.5 --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --docdir=/usr/share/doc/emacs --htmldir=/usr/share/doc/emacs/html -C --with-w32
 'CFLAGS=-ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/home/kbrown/src/cygemacs/emacs-24.5-2.x86_64/build=/usr/src/debug/emacs-24.5-2 -fdebug-prefix-map=/home/kbrown/src/cygemacs/emacs-24.5-2.x86_64/src/emacs-24.5=/usr/src/debug/emacs-24.5-2'
 CPPFLAGS= LDFLAGS='

As I see there's an advice on `find-file', yes that's true; here's mine:

--8<---------------cut here---------------start------------->8---
  (defadvice find-file (around my/find-file activate)
    "Open the file named FILENAME and report time spent."
    (let ((filename (ad-get-arg 0))
          (find-file-time-start (float-time)))
      (message "(Info) Finding file %s..." filename)
      ad-do-it
      (message "(Info) Found file %s in %.2f s" filename
               (- (float-time) find-file-time-start))))
--8<---------------cut here---------------end--------------->8---

Other couple of (innocent) customs:

--8<---------------cut here---------------start------------->8---
  (global-set-key (kbd "M-x") #'helm-M-x)

  (require 'dired-x)
--8<---------------cut here---------------end--------------->8---