From: Oleksandr Gavenko <gavenkoa@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: What's your favourite *under_publicized* editing feature of Emacs?
Date: Wed, 09 Feb 2011 22:51:37 +0200 [thread overview]
Message-ID: <iiuuot$6hb$1@dough.gmane.org> (raw)
In-Reply-To: <jwvy65prfx1.fsf-monnier+gnu.emacs.help@gnu.org>
On 2011-02-09 6:37, Stefan Monnier wrote:
>>> I set 'grep-mode' on my log file (which follow GNU
>>> error coding convention). On 50-100 KiB logs it take
>>> 10 sec to highlight matches. On larger files I type
>>> C-g to stop matching for highlighting.
>
> You may want to try the Emacs trunk's version of compile.el (I think
> it'll work with Emacs-23 as well). It should help out by being more
> lazy (e.g. it'll still takes 10s to parse the file when you jump to the
> end of it, but it should open instantaneously because it'll only need to
> parse the first page for that).
>
Sound interesting.
But you wrote that jumping to end of buffer take whole time ((
We recently discuss about Emacs hex mode and I ask how read only
needed part of file to display (as binaries some times very large
for opening in Emacs).
This allow Emacs spend time on processing only needed (displayed)
part of information.
Same with highlighting of compilation/grep like buffers.
Usually reference for file/line placed on single line (or two...).
So highlighting can be performed only on visible part on large files.
Does currently Emacs highlight all file or this depend on mode?
How about generic-modes?
>> And I realize that compilation-mode is dumb as it try
>> set on all matched file/line pairs text properties to
>> allow move to another file by RET.
>
> compilation-mode indeed does more work than I'd like at the "highlight"
> time, and some of that work could indeed be delayed to the moment the
> user hits RET on a line. But my impression is that most of the time is
> spent regexp-matching (i.e. looking for matches) anyway, so moving this
> work won't make much difference if any. IOW my impression is that if
> your code is faster it's because it uses either more efficient regexps,
> or fewer regexps.
>
>> ("^\\([^:]+\\):\\([[:digit:]]+\\):[^
>
> E.g. this regexp is more efficient than the one used by grep.el, by
> disallowing : in file names (resulting in a backtrack-free regexp).
>
I previously ask about regex performance in this list and
try define-generic-mode with different regex. Time to
highlighting do not significant changed with different regex.
Seems problem in another place and I read doc how profile.
Look at 'my.log' file, which is 289 KiB long:
-*- mode: my-log; default-directory: "~/devel/job/plugin-hg/" -*-
WM: 0x0024: WM_GETMINMAXINFO
win-gui-admin.c:140: WndProc #8
WM: 0x0024: WM_GETMINMAXINFO
win-gui-admin.c:140: WndProc #8
WM: 0x0024: WM_GETMINMAXINFO
... (repeat 2 last lines many times)
When I eval: (benchmark-run 1 (revert-buffer))
I get: (0.172 0 0.0)
When I change mode line to
-*- mode: grep; default-directory: "~/devel/job/plugin-hg/" -*-
and eval: (benchmark-run 1 (revert-buffer))
I get: (22.406 1 0.156)
As you can see it is 100 times slower!
I perform 'M-x elp-instrument-package grep'
and 'M-x elp-instrument-package compilation'. Next I perform
'(revert-buffer)' and 'M-x elp-results' and get:
grep-mode 1 23.906 23.906
compilation-error-properties 4742 23.047 0.0048601855
compilation-internal-error-properties 4742 0.094 1.98...e-005
compilation-get-file-structure 4742 0.016 3.37...e-006
compilation-mode 1 0.0 0.0
compilation-mode-font-lock-keywords 1 0.0 0.0
compilation-setup 1 0.0 0.0
As you can see 'compilation-error-properties' eat a lot of time and
it executed on all lines like 'file:line: msg' (in my example half of
lines match such pattern)!
I press C-u C-x = on green underscored char (file name for jump) and see
among text properties: 'message' with value is:
((nil 140
(("win-gui-admin.c" nil)
nil
(140 #1)))
2 nil)
I assume that 'compilation-error-properties' spend time on setting this
properties.
So because of unnecessary work to set text property to well structured
data on *all* lines we have slow down instead perform parsing of
reference on demand.
As I previously shown 'my-log-goto' func for this purpose.
I think such idea (trying match pattern on point position) can be
generalized by looping across 'compilation-error-regexp-alist'.
Do you think this need filed as a bug or request?
Or I am something missing?
--
Best regards!
next prev parent reply other threads:[~2011-02-09 20:51 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.0.1296117403.8303.help-gnu-emacs@gnu.org>
2011-01-28 9:54 ` What's your favourite *under_publicized* editing feature of Emacs? Simón Ortiz
2011-01-28 21:22 ` Ken Goldman
[not found] ` <mailman.21.1296249764.1176.help-gnu-emacs@gnu.org>
2011-01-28 22:59 ` Stefan Monnier
2011-01-29 14:46 ` Oleksandr Gavenko
2011-01-29 15:00 ` Eli Zaretskii
2011-01-29 15:02 ` Perry Smith
[not found] ` <mailman.10.1296313340.8933.help-gnu-emacs@gnu.org>
2011-01-29 16:08 ` Stefan Monnier
2011-02-17 10:53 ` Giorgos Keramidas
2011-02-17 13:43 ` Perry Smith
2011-02-17 14:01 ` Thien-Thi Nguyen
[not found] ` <mailman.9.1297951684.6316.help-gnu-emacs@gnu.org>
2011-02-17 19:04 ` view/edit large files (was: What's your favourite *under_publicized* editing feature of Emacs?) Ted Zlatanov
2011-02-18 0:09 ` What's your favourite *under_publicized* editing feature of Emacs? Tim X
2011-01-29 12:55 ` Javier Sanz
2011-02-06 20:11 ` Oleksandr Gavenko
2011-02-08 23:10 ` Oleksandr Gavenko
[not found] ` <mailman.11.1297206657.16135.help-gnu-emacs@gnu.org>
2011-02-09 4:37 ` Stefan Monnier
2011-02-09 20:51 ` Oleksandr Gavenko [this message]
2011-02-09 21:31 ` Oleksandr Gavenko
2011-02-09 22:32 ` Thien-Thi Nguyen
2011-02-14 20:44 ` Oleksandr Gavenko
[not found] ` <mailman.10.1297284733.9144.help-gnu-emacs@gnu.org>
2011-02-10 17:24 ` Stefan Monnier
2011-03-01 21:30 What's your favourite *under_publicized* editing feature ofEmacs? Cthun
2011-03-02 1:00 ` What's your favourite *under_publicized* editing feature of Emacs? Steve
2011-03-02 5:34 ` PJ Weisberg
-- strict thread matches above, loose matches on Subject: below --
2011-01-27 8:33 Le Wang
2011-01-27 9:29 ` Deniz Dogan
2011-01-27 12:03 ` Wang Lei
2011-01-27 14:13 ` suvayu ali
2011-01-27 14:12 ` Ken Goldman
2011-01-27 18:11 ` Erik Iverson
[not found] ` <mailman.0.1296137574.27610.help-gnu-emacs@gnu.org>
2011-01-27 22:23 ` Joe Fineman
2011-01-28 6:40 ` Jason Rumney
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='iiuuot$6hb$1@dough.gmane.org' \
--to=gavenkoa@gmail.com \
--cc=help-gnu-emacs@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.