unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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



  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).