Thread: [CEDET-devel] Dec CEDET Changes
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2008-12-17 19:03:40
|
Hi all, I have a wide range of CEDET changes to talk about this week to tempt you to pull down the latest from CVS. Some issues have already been found and fixed thanks to the mailing list. EIEIO Performance Changes: EIEIO has a new method invocation optimization. My Semantic related performance changes caused the EIEIO method invocation to rise up dominating the time. A single invocation only takes .0003 seconds, but it happens 2-3 thousand times per smart-completion, so it can add up. I did some research, and over 90% of all methods are primary only methods. Over half of those only have a single optimization. By identifying this at load time, optimized versions of the invocation engine that ignores generic and :BEFORE/:AFTER methods makes the primary only methods ~50% faster, and single method invocations a little over 70% faster. See these commands for more: M-x eieio-display-method-list RET M-x eieio-perftest-onemethodcall RET If you see stacks with "primary-only" in the names, then it may be a bug in this new system. SemanticDB performance changes: I found a bug in the function that calculates the current list of includes that caused it to recalculate too often. Fixing this prevents duplicate work, and can shave off a couple seconds in a big project. EDE Performance changes: I think I discussed this once already. EDE's file lookup system used to hit the disk many times. I added a caching system so a typical file load will do only 2 or 3 lookups instead of 38 or so. When doing smart completion and looking up many header files, this is a huge win. Overall: For a system I have at work, a difficult problem used to take 3.5 seconds or so. It is now down around 1.7 seconds. Huzazh! EDE Changes: EDE can now use GNU Global for file lookup. Some project times, notably the ede-cpp-root, needed a lot of fancy hand-written-by-user code to get everything to work well. Now you can customize the variable `ede-locate-setup-options' to add either GNU Global, or the typical unix "locate" command to the list. For new projects it will pick the best lookup tool and use that. Be sure to keep the 'base' option at the end of the list. For good measure, there is ede-find-file on C-c . f. Type in a file name, and it will find it in your project for you iff you have a locate system setup. Linux support: There is a new ede-linux project type. If you hack on the linux kernel and have a big custom setup, you can now skip it, as EDE will automatically detect a Linux kernel and set you up. I've found in my old 2.4 based kernel a typical completion is calculated in less than a second. Sweet. semantic-symref: By request, there is now a `semantic-symref-symbol' command which will lookup any old symbol. Let me know if any troubles arise from these changes. Thanks Eric -- Eric Ludlam: er...@si... Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net |