unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* emacs / vim - time taken to open threads
@ 2015-03-24 21:58 Matthew Lear
  2015-03-24 23:10 ` David Bremner
  0 siblings, 1 reply; 6+ messages in thread
From: Matthew Lear @ 2015-03-24 21:58 UTC (permalink / raw)
  To: notmuch

Hi all,
Continuing my journey with notmuch... It has been very enjoyable so far.
One thing which has been puzzling me greatly is the time it can take to
notmuch-show a moderately sized thread (eg one with 32 messages with a
three to four sentence paragraph per message - approx 32 x 35kB with
some small attachments). Opening the thread using notmuch-show in emacs
takes about six seconds. If I build the ruby bindings and load up
notmuch in vim or gvim, opening the same thread takes less than a
second. It's *loads* quicker.

I've rolled back and rolled forwards the version of emacs in my gentoo
installation (various versions of 24) and built it without all available
options, run it bare bones in X and without X. The behaviour is the
same. I've also stripped back my .emacs to nothing more than pulling in
notmuch.el but there is no change in the behaviour.

I've read some posts about emacs hanging when opening emails due to
attached files, but that was quite a while ago (pre 24). Some of the
emails in my thread have photos (a few hundred kB), others have URLs but
this shouldn't slow emacs down.

Despite being a vi guy for years, I prefer the emacs interface to
notmuch and really like what it provides. I'm sticking with it but there
is clearly a problem and I'd like to solve it. It's annoying when you
know that something isn't working as well as it should be.

Is it known that emacs is slower with notmuch or do you think I have
some kind of build / environment problem? Or could it be due to some of
the email content (doubtful) or something else such as encoding etc?

Cheers,
--  Matt

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: emacs / vim - time taken to open threads
  2015-03-24 21:58 emacs / vim - time taken to open threads Matthew Lear
@ 2015-03-24 23:10 ` David Bremner
  2015-03-25  7:54   ` Tomi Ollila
  0 siblings, 1 reply; 6+ messages in thread
From: David Bremner @ 2015-03-24 23:10 UTC (permalink / raw)
  To: Matthew Lear, notmuch

Matthew Lear <matt@bubblegen.co.uk> writes:

>
> Despite being a vi guy for years, I prefer the emacs interface to
> notmuch and really like what it provides. I'm sticking with it but there
> is clearly a problem and I'd like to solve it. It's annoying when you
> know that something isn't working as well as it should be.
>
> Is it known that emacs is slower with notmuch or do you think I have
> some kind of build / environment problem? Or could it be due to some of
> the email content (doubtful) or something else such as encoding etc?

My experience is that the emacs interface is faster than the vim one.
At least I don't have an examples handy where emacs is slower than the
vim interface at rendering a thread. At a wild guess, I suspect it has
to do with how many attachments there are, and the emacs UI being
overenthusiastic about processing attachements.

d

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: emacs / vim - time taken to open threads
  2015-03-24 23:10 ` David Bremner
@ 2015-03-25  7:54   ` Tomi Ollila
  2015-03-25 11:21     ` Matthew Lear
  0 siblings, 1 reply; 6+ messages in thread
From: Tomi Ollila @ 2015-03-25  7:54 UTC (permalink / raw)
  To: David Bremner, Matthew Lear, notmuch

On Wed, Mar 25 2015, David Bremner <david@tethera.net> wrote:

> Matthew Lear <matt@bubblegen.co.uk> writes:
>
>>
>> Despite being a vi guy for years, I prefer the emacs interface to
>> notmuch and really like what it provides. I'm sticking with it but there
>> is clearly a problem and I'd like to solve it. It's annoying when you
>> know that something isn't working as well as it should be.
>>
>> Is it known that emacs is slower with notmuch or do you think I have
>> some kind of build / environment problem? Or could it be due to some of
>> the email content (doubtful) or something else such as encoding etc?
>
> My experience is that the emacs interface is faster than the vim one.
> At least I don't have an examples handy where emacs is slower than the
> vim interface at rendering a thread. At a wild guess, I suspect it has
> to do with how many attachments there are, and the emacs UI being
> overenthusiastic about processing attachements.

I've seen over 15 seconds of load time when opening some 20+ message
thread -- and jumping through messages has been slow in emacs ui.

I have not got time to investigate this further...

>
> d

Tomi

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: emacs / vim - time taken to open threads
  2015-03-25  7:54   ` Tomi Ollila
@ 2015-03-25 11:21     ` Matthew Lear
  2015-04-01  4:08       ` David Bremner
  0 siblings, 1 reply; 6+ messages in thread
From: Matthew Lear @ 2015-03-25 11:21 UTC (permalink / raw)
  To: Tomi Ollila; +Cc: Matthew Lear, notmuch

[-- Attachment #1: Type: text/plain, Size: 934 bytes --]

>> My experience is that the emacs interface is faster than the vim one.
>> At least I don't have an examples handy where emacs is slower than the
>> vim interface at rendering a thread. At a wild guess, I suspect it has
>> to do with how many attachments there are, and the emacs UI being
>> overenthusiastic about processing attachements.
>
> I've seen over 15 seconds of load time when opening some 20+ message
> thread -- and jumping through messages has been slow in emacs ui.

Here's two attachments obtained using the in-built profiler in emacs 24 -
one for memory profiling and one for cpu. This particular thread took > 30
secs to load and emacs was locked up the entire time. I'm no lisp expert,
but perhaps somebody could interpret this and possible suggest what could
be going on..? W.r.t. both cpu and memory usage, quite a lot of time seems
to be spent in indent-rigidly and notmuch-show-insert-thread.

Cheers,
--  Matt

[-- Attachment #2: cpu.txt --]
[-- Type: text/plain, Size: 0 bytes --]



[-- Attachment #3: mem.txt --]
[-- Type: text/plain, Size: 5259 bytes --]

- command-execute                                       1,274,239,745  99%
 - call-interactively                                   1,274,239,745  99%
  - notmuch-search-show-thread                          1,244,222,992  97%
   - notmuch-show                                       1,244,222,992  97%
    - notmuch-show-build-buffer                         1,244,184,644  97%
     - notmuch-show-insert-forest                       1,052,295,452  82%
      - mapc                                            1,052,295,452  82%
       - #<compiled 0xd784f3>                           1,052,295,452  82%
        - notmuch-show-insert-thread                    1,052,295,452  82%
         - mapc                                         1,052,295,452  82%
          - #<compiled 0xd784cd>                        1,052,295,452  82%
           - notmuch-show-insert-tree                   1,052,295,452  82%
            - notmuch-show-insert-thread                  840,006,831  65%
             - mapc                                       840,006,831  65%
              - #<compiled 0xd784cd>                      840,006,831  65%
               - notmuch-show-insert-tree                 840,006,831  65%
                - notmuch-show-insert-thread              475,772,280  37%
                 - mapc                                   475,772,280  37%
                  - #<compiled 0xd784cd>                  475,772,280  37%
                   - notmuch-show-insert-tree             475,772,280  37%
                    - notmuch-show-insert-thread          393,675,698  30%
                     - mapc                               393,675,698  30%
                      - #<compiled 0xd784cd>              393,675,698  30%
                       - notmuch-show-insert-tree         393,675,698  30%
                        - notmuch-show-insert-msg         393,670,578  30%
                           indent-rigidly                 378,976,399  29%
                         + notmuch-show-insert-headers      8,573,181   0%
                         + notmuch-show-strip-re               38,912   0%
                         + notmuch-show-insert-headerline        21,748   0%
                         + notmuch-show-message-visible         5,264   0%
                           notmuch-show-set-message-properties         3,096   0%
                           make-overlay                         1,418   0%
                    + notmuch-show-insert-msg              82,096,582   6%
                - notmuch-show-insert-msg                 364,233,495  28%
                 + notmuch-show-insert-body               237,892,232  18%
                   indent-rigidly                         123,850,002   9%
                 + notmuch-show-insert-headers                377,077   0%
                 + notmuch-show-insert-headerline              85,340   0%
                 + notmuch-show-strip-re                       20,556   0%
                 + notmuch-show-headers-visible                 4,208   0%
                 + notmuch-show-message-visible                 1,056   0%
            - notmuch-show-insert-msg                     212,283,421  16%
               indent-rigidly                             155,843,920  12%
             + notmuch-show-insert-body                    51,496,368   4%
             + notmuch-show-insert-headers                    379,990   0%
             + notmuch-show-insert-headerline                  93,694   0%
             + notmuch-show-strip-re                           17,802   0%
             + notmuch-show-message-visible                     1,056   0%
             + notmuch-show-set-message-properties              1,056   0%
     - notmuch-query-get-threads                          180,741,671  14%
      - apply                                             180,741,671  14%
       - notmuch-call-notmuch-sexp                        180,741,671  14%
        - notmuch-call-notmuch--helper                    175,917,905  13%
           apply                                          175,917,905  13%
        + make-temp-file                                      101,654   0%
          generate-new-buffer                                   1,029   0%
     + jit-lock-register                                   11,145,353   0%
     + notmuch-show-strip-re                                    1,144   0%
       replace-regexp-in-string                                 1,024   0%
    + notmuch-show-goto-first-wanted-message                   24,480   0%
    + switch-to-buffer                                         12,839   0%
  + helm-M-x                                               29,989,777   2%
  + previous-line                                              17,280   0%
  + next-line                                                   9,696   0%
+ notmuch-show-command-hook                                   266,546   0%
+ ...                                                          44,578   0%
- redisplay_internal (C function)                               7,648   0%
   file-remote-p                                                5,600   0%
 + kill-this-buffer-enabled-p                                   2,048   0%
  mouse-fixup-help-message                                      1,024   0%

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: emacs / vim - time taken to open threads
  2015-03-25 11:21     ` Matthew Lear
@ 2015-04-01  4:08       ` David Bremner
  2015-04-11 18:09         ` Matthew Lear
  0 siblings, 1 reply; 6+ messages in thread
From: David Bremner @ 2015-04-01  4:08 UTC (permalink / raw)
  To: Matthew Lear; +Cc: notmuch

Matthew Lear <matt@bubblegen.co.uk> writes:

> Here's two attachments obtained using the in-built profiler in emacs 24 -
> one for memory profiling and one for cpu. This particular thread took > 30
> secs to load and emacs was locked up the entire time. I'm no lisp expert,
> but perhaps somebody could interpret this and possible suggest what could
> be going on..? W.r.t. both cpu and memory usage, quite a lot of time seems
> to be spent in indent-rigidly and notmuch-show-insert-thread.
>

That's consistent with what I've seen with very large text attachements.
Can you try the patch

    id:1427540939-10055-1-git-send-email-markwalters1009@gmail.com [1]

[1] http://mid.gmane.org/1427540939-10055-1-git-send-email-markwalters1009@gmail.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: emacs / vim - time taken to open threads
  2015-04-01  4:08       ` David Bremner
@ 2015-04-11 18:09         ` Matthew Lear
  0 siblings, 0 replies; 6+ messages in thread
From: Matthew Lear @ 2015-04-11 18:09 UTC (permalink / raw)
  To: David Bremner; +Cc: notmuch

On 01/04/15 05:08, David Bremner wrote:
> Matthew Lear <matt@bubblegen.co.uk> writes:
> 
>> Here's two attachments obtained using the in-built profiler in emacs 24 -
>> one for memory profiling and one for cpu. This particular thread took > 30
>> secs to load and emacs was locked up the entire time. I'm no lisp expert,
>> but perhaps somebody could interpret this and possible suggest what could
>> be going on..? W.r.t. both cpu and memory usage, quite a lot of time seems
>> to be spent in indent-rigidly and notmuch-show-insert-thread.
>>
> 
> That's consistent with what I've seen with very large text attachements.
> Can you try the patch
> 
>     id:1427540939-10055-1-git-send-email-markwalters1009@gmail.com [1]
> 
> [1] http://mid.gmane.org/1427540939-10055-1-git-send-email-markwalters1009@gmail.com
> 

Sorry for the late reply. That has definitely made an improvement.
Opening a large thread takes much less time with the patch applied.
--  Matt

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-04-11 18:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-24 21:58 emacs / vim - time taken to open threads Matthew Lear
2015-03-24 23:10 ` David Bremner
2015-03-25  7:54   ` Tomi Ollila
2015-03-25 11:21     ` Matthew Lear
2015-04-01  4:08       ` David Bremner
2015-04-11 18:09         ` Matthew Lear

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).