yes, please clean up as you see fit (would it be possible to switch off the event responder altogether the save the function calls?)
unfortunately, I can't say I used any special tool to find the problem other than C::B itself (lots of find in files and find implementation of). I know that on Linux you can use callgrind (part of valgrind) to produce call statistics, but I'm not familiar enough with that tool or the C::B code to use it effectively (you have to have an idea of what code should be called thousands of times and what shouldn't).
The main reason I was able find the problem came from playing around with big files and from recent stuff I learned while playing with scintilla (adding the php lexer and my wild goose chase with wxIdleEvents). Scintilla is very event driven, so it was just a case of figuring out which events were creating lags or conflicts... there may still be more issues that callgrind might be able to unearth.
It also helps that you guys have writen very clear modular code!
(despite wxwidgets macro heavy implementation)
back to the Function Parsing code - delaying till all project files are open is good, but then it appears that the parsing occurs on the main thread, which blocks the UI until it's done, which kind of defeats the purpose of waiting...
and next problem: after the editor loses then regains focus, the function parser appears to reparse the whole file if you click on the class/function browser drop down. should only happen if file is modified right? (unless the data is released when the file loses focus?)