all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Dan Nicolaescu <dann@ics.uci.edu>
Cc: emacs-devel@gnu.org
Subject: Re: slow output in *compilation* buffer
Date: Sat, 22 Aug 2009 21:28:20 -0400	[thread overview]
Message-ID: <jwvws4vbalw.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <200908220823.n7M8NAk5028199@godzilla.ics.uci.edu> (Dan Nicolaescu's message of "Sat, 22 Aug 2009 01:23:10 -0700 (PDT)")

>   %   cumulative   self              self     total           
>  time   seconds   seconds    calls   s/call   s/call  name    
>  31.19      2.72     2.72 52618323     0.00     0.00  lookup_char_property
>  20.30      4.49     1.77 51726150     0.00     0.00  previous_interval
>  12.16      5.55     1.06 208889310     0.00     0.00  Fcdr
>   5.85      6.06     0.51 52444384     0.00     0.00  Fassq
>   5.39      6.53     0.47     4573     0.00     0.00  Fprevious_single_property_change
>   2.64      6.76     0.23  8860105     0.00     0.00  mark_object
>   2.52      6.98     0.22    10621     0.00     0.00  Fsetcar
>   2.29      7.18     0.20 52618300     0.00     0.00  textget
>   1.83      7.34     0.16    59828     0.00     0.00  re_search_2
>   1.72      7.49     0.15   305181     0.00     0.00  re_match_2_internal
>   1.03      7.58     0.09    82087     0.00     0.00  Fbyte_code
>   0.80      7.65     0.07     9094     0.00     0.00  adjust_for_invis_intang
>   0.80      7.72     0.07   581767     0.00     0.00  find_interval
>   0.69      7.78     0.06   295253     0.00     0.00  next_interval
>   0.69      7.84     0.06       21     0.00     0.02  Fgarbage_collect
>   0.57      7.89     0.05    23886     0.00     0.00  mark_vectorlike

- not sure why it's GCing that much, but it sounds like something that
  can be improved.
- the re_* part of the profile is hard to improve with a quick fix,
  I think: it just represents regexp-searching every one of the regexps
  in compilation-error-regexp-alist in turn.  Of course, there is a way
  to do that (a lot) faster, by compiling all those regexps into a DFA.
- why does the gprof data only seem to account for a bit less than 10s
  when you say it takes 25s to complete?
- It seems that they the calls to the interval code come from
  compilation-error-properties, but that function should only be called
  for regexps that do match, which shouldn't be that many.  Can you look
  at the text to see if there really are that many matches?  BTW, we
  should probably be able to make compile.el a bit lazier (i.e. the
  font-lock-phase part of the code should do a bit less work by moving
  it to the next-error-phase code).

Another thing: the compilation code currently uses font-lock-keywords,
but it should probably be changed to use font-lock-syntactic-keywords
instead (which should make it unnecessary to disable jit-lock).

> So it seems that fontification (and things related to it) are very very expensive.

compile.el does its work via font-lock, so I do expect most/all of the
time to be spent there.


        Stefan




  reply	other threads:[~2009-08-23  1:28 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-22  8:23 slow output in *compilation* buffer Dan Nicolaescu
2009-08-23  1:28 ` Stefan Monnier [this message]
2009-08-23  6:27   ` Dan Nicolaescu
2009-08-25 17:21     ` Stefan Monnier
2009-08-25 21:37       ` David Kastrup
2009-08-26  7:33       ` Dan Nicolaescu
2009-08-26 18:56         ` Stefan Monnier
2009-08-24 18:52   ` Dan Nicolaescu
2009-08-24 19:13     ` Chong Yidong
2009-08-24 19:36       ` Dan Nicolaescu
2009-08-24 20:24     ` Dan Nicolaescu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvws4vbalw.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=dann@ics.uci.edu \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.