From: "Eric M. Ludlam" <eric@siege-engine.com>
To: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: fplemma@gmail.com, Alex Ott <alexott@gmail.com>,
rms@gnu.org, joakim@verona.se, emacs-devel@gnu.org
Subject: CEDET speed issues [was Re: Efforts to attract more users?]
Date: Sun, 11 Jul 2010 21:57:21 -0400 [thread overview]
Message-ID: <4C3A7681.8070003@siege-engine.com> (raw)
In-Reply-To: <87vd8od8rs.fsf@linux.vnet.ibm.com>
On 07/09/2010 10:33 AM, Aneesh Kumar K. V wrote:
> On Fri, 09 Jul 2010 14:23:24 +0200, Alex Ott<alexott@gmail.com> wrote:
>> Re
>>
>> Eric M. Ludlam at "Fri, 09 Jul 2010 08:05:32 -0400" wrote:
>> EML> On 07/08/2010 11:05 PM, Richard Stallman wrote:
>> >> The Eclipse IDE has some nice features. Maybe CEDET gives us some of
>> >> them, but maybe we still lack some.
>>
>> EML> In some ways CEDET is "better" that Eclipse (code completion in C/C++ is better), and in
>> EML> others it falls behind, such as project management. (This I gather from comments I've
>> EML> read).
>>
>> The biggest problem with CEDET is speed,
>
> This is one of the main issue i also have. I would really like some of
> the CEDET related operation pushed to background and make it don't
> effect my editing task. But otherwise I am really happy with the
> feature provided.
When CEDET is all-on, it certainly is busy anytime it first hits a
project. It has to parse all the files and discover the extent of your
project. In general, it postpones doing stuff as long as possible into
idle time. If a user opens some new big file in some big project for
the first time, scrolls down and hits "complete" on a line, it will go
off into la-la land for a while to perform the operation.
If the user instead opens that project browses around, gets a cup of
coffee, and comes back and asks for a completion, it will be quite fast,
often less than a second even on a relatively large project (think Linux
Kernel sized.)
When CEDET is doing busy-work during idle time, it should always be
interruptible. If you press something like C-v or other nav command, it
should stop and go do that instead. If it doesn't then there is clearly
a loop in part of the code that needs the interrupt handler added. I've
noticed this parsing big files sometimes but haven't found a good
candidate spot to add the check.
If a particular kind of completion always takes a long time, there is a
profiler setup command you can use to capture your case for analysis in
semantic-elp.el. It will save the results making it easier to share the
results.
My longer term plans involve pushing chunks of the busy work off to a
separate process to avoid much of these problems. I also need the
separate process to offload the database information from the Emacs
process, keeping most of it on disk unless asked-for. Super large
projects (like what I work on at work) will cause your whole machine to
slow down because Emacs' working set gets so huge. (Eight Gig And
Constantly Swapping?)
My current thoughts on making this work is to create a separate
standalone program to be run as service, much the way databases like
Postgres is a service. It would fire off multiple "emacs -batch" slaves
running CEDET which it would use to collect and process data. It would
then manage disk files of Tag data, possibly in some new format. User
run Emacses would also run CEDET, and connect to this service as a
classic semanticdb backend. To me, this seems like the only way to
maximize code re-use while also getting the desired work offload from
the main Emacs process.
I'll probably start digging into that seriously around November this
year, but I'll be happy to discuss it before then if anyone has ideas
for implementation short-cuts, etc.
Eric
next prev parent reply other threads:[~2010-07-12 1:57 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-08 5:31 Efforts to attract more users? Ken Hori
2010-07-08 7:44 ` joakim
2010-07-08 13:28 ` Adrian Robert
2010-07-08 14:26 ` Stephen J. Turnbull
2010-07-08 14:53 ` Stuart Hacking
2010-07-09 21:46 ` Richard Stallman
2010-07-09 22:52 ` Christoph
2010-07-09 23:53 ` Chong Yidong
2010-07-10 14:51 ` Richard Stallman
2010-07-10 14:55 ` Christoph
2010-07-08 15:09 ` Teemu Likonen
2010-07-08 13:54 ` Stuart Hacking
2010-07-09 3:05 ` Richard Stallman
2010-07-09 3:24 ` Bernardo Barros
2010-07-09 15:01 ` Stephen Eilert
2010-07-09 20:25 ` Rolando Pereira
2010-07-09 7:26 ` Aneesh Kumar K. V
2010-07-09 11:02 ` Lennart Borgman
2010-07-09 7:31 ` christian.lynbech
2010-07-09 11:04 ` Lennart Borgman
2010-07-09 11:24 ` Juanma Barranquero
2010-07-09 11:41 ` Lennart Borgman
2010-07-09 12:58 ` Juanma Barranquero
2010-07-09 13:09 ` Lennart Borgman
2010-07-09 16:09 ` Dan Nicolaescu
2010-07-09 16:42 ` Lennart Borgman
2010-07-09 17:05 ` Dan Nicolaescu
2010-07-09 17:07 ` Lennart Borgman
2010-07-09 17:24 ` Dan Nicolaescu
2010-07-09 17:29 ` Drew Adams
2010-07-10 0:03 ` Juanma Barranquero
2010-07-10 19:15 ` Chong Yidong
2010-07-11 2:43 ` Lennart Borgman
2010-07-10 0:03 ` Juanma Barranquero
2010-07-10 0:11 ` Lennart Borgman
2010-07-10 0:16 ` Juanma Barranquero
2010-07-10 0:28 ` Lennart Borgman
2010-07-10 23:43 ` Juanma Barranquero
2010-07-11 2:40 ` Lennart Borgman
2010-07-11 2:56 ` Juanma Barranquero
2010-07-11 3:13 ` Lennart Borgman
2010-07-12 0:23 ` Stephen J. Turnbull
2010-07-12 1:41 ` Juanma Barranquero
2010-07-12 7:43 ` Stephen J. Turnbull
2010-07-12 8:20 ` Eli Zaretskii
2010-07-12 12:37 ` Richard Stallman
2010-07-12 13:22 ` Eli Zaretskii
2010-07-12 8:21 ` David Kastrup
2010-07-12 7:19 ` Eli Zaretskii
2010-07-12 8:05 ` Stephen J. Turnbull
2010-07-12 8:33 ` Eli Zaretskii
2010-07-12 8:38 ` Deniz Dogan
2010-07-12 8:53 ` David Kastrup
2010-07-09 7:33 ` Emacs learning curve (was Re: Efforts to attract more users?) christian.lynbech
2010-07-09 7:43 ` Emacs learning curve Masatake YAMATO
2010-07-09 11:01 ` Efforts to attract more users? Lennart Borgman
2010-07-11 4:37 ` Miles Bader
2010-07-11 10:48 ` Lennart Borgman
2010-07-11 13:24 ` Miles Bader
2010-07-11 13:55 ` Lennart Borgman
2010-07-11 13:59 ` Miles Bader
2010-07-11 14:13 ` Lennart Borgman
2010-07-11 14:24 ` Eli Zaretskii
2010-07-11 15:01 ` Alan Mackenzie
2010-07-11 15:31 ` Bernardo Barros
2010-07-11 17:28 ` Eli Zaretskii
2010-07-11 21:25 ` John Yates
2010-07-12 7:37 ` Eli Zaretskii
2010-07-12 12:36 ` Richard Stallman
2010-07-12 12:47 ` Stephen Eilert
2010-07-12 16:01 ` Stephen J. Turnbull
2010-07-12 17:25 ` Bernardo Barros
2010-07-12 17:40 ` Eli Zaretskii
2010-07-13 1:33 ` Why not Qt4? (hi, Drew! was: Efforts to attract more users?) Stephen J. Turnbull
2010-07-13 2:37 ` Efforts to attract more users? Miles Bader
2010-07-13 13:51 ` Richard Stallman
2010-07-13 13:56 ` Deniz Dogan
2010-07-13 15:07 ` Alfred M. Szmidt
2010-07-13 15:52 ` Deniz Dogan
2010-07-13 16:17 ` Eli Zaretskii
2010-07-13 15:24 ` Bernardo Barros
2010-07-12 0:25 ` Lennart Borgman
2010-07-11 14:52 ` Bernardo Barros
2010-07-11 15:49 ` Chong Yidong
2010-07-12 0:24 ` Lennart Borgman
2010-07-12 9:42 ` joakim
2010-07-09 12:05 ` Eric M. Ludlam
2010-07-09 12:23 ` Alex Ott
2010-07-09 14:33 ` Aneesh Kumar K. V
2010-07-12 1:57 ` Eric M. Ludlam [this message]
2010-07-09 15:39 ` Leo
2010-07-10 19:05 ` Tom Tromey
2010-07-08 16:56 ` Drew Adams
2010-07-08 23:28 ` Dan Nicolaescu
2010-07-08 23:56 ` Fren Zeee
2010-07-09 0:22 ` Bernardo Barros
2010-08-02 13:24 ` Stefan Monnier
2010-08-02 13:32 ` Bernardo Barros
2010-08-02 20:15 ` Stefan Monnier
2010-08-02 20:30 ` Lennart Borgman
2010-08-02 20:39 ` Jay Belanger
2010-08-03 6:40 ` Andreas Röhler
2010-08-03 8:11 ` Stuart Hacking
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C3A7681.8070003@siege-engine.com \
--to=eric@siege-engine.com \
--cc=alexott@gmail.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=emacs-devel@gnu.org \
--cc=fplemma@gmail.com \
--cc=joakim@verona.se \
--cc=rms@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 public inbox
https://git.savannah.gnu.org/cgit/emacs.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).