-
Notifications
You must be signed in to change notification settings - Fork 96
Description
Hi,
I've found that irony-cdb-autosetup-compile-options can be really slow when reading large JSON compilation databases. I noticed this when using irony-mode on llvm itself. Every time I open a new source file there is a ~5s delay.
Based on my attempts at profiling, it seems most of the time is spent in irony-cdb-json--transform-command. Time is also spent in json-read-file (emacs built-in). I am no elisp expert, but as I understand, this only reads and postprocess the database a little. The database file is ~10000 lines, 2 MB, so I don't understand where the 5s come form. Maybe it is the communication to the server? The elisp profiler may not see this time.
Anyway, I suggest moving the database reading to the server. I might also be willing to do this, if you agree. It would be a good way to read up libclang and one of my favorite emacs extensions :)
/Karl
Profiler output:
- ... 3387 92%
- irony-cdb--autodetect-compile-options 2942 80%
- catch 2942 80%
- let 2942 80%
- while 2942 80%
- let 2942 80%
- funcall 2942 80%
- irony-cdb-json 2942 80%
- cond 2942 80%
- irony-cdb-json--get-compile-options 2942 80%
- let 2942 80%
- if 2942 80%
- progn 2942 80%
- progn 2942 80%
- let 2942 80%
- irony-cdb-json--load-db 2942 80%
- delq 2942 80%
- mapcar 2939 80%
+ irony-cdb-json--transform-compile-command 1958 53%
+ json-read-file 981 26%
Automatic GC 445 12%
+ command-execute 254 6%
+ timer-event-handler 10 0%