* Re: [Orgmode] Slow speed of week and month views @ 2017-08-04 15:14 Christoph Groth 2017-08-05 3:07 ` Adam Porter 0 siblings, 1 reply; 22+ messages in thread From: Christoph Groth @ 2017-08-04 15:14 UTC (permalink / raw) To: emacs-orgmode Carsten Dominik wrote in 2010: > I am afraid I don't see any major speed improvements that could > make this happen. Yes, one could parse all the files once, build > a table in memory and get the entries for each day from there - > but that comes down to a complete rewrite of the parser, maybe > even to switching to an internal representation model for > Org-mode. > I don't see that happening, I am afraid. Computing the agenda month view takes 20 seconds in my case. That's perhaps the most serious problem with orgmode as I (and I suppose others as well) use it. It would be great if this issue could be solved after all. Would it be really so difficult to do? The actual parsing seems to be done in the function org-agenda-get-day-entries as called by org-agenda-list. Inside org-agenda-get-day-entries the crucial bit seems to be (org-agenda-today-p date). If that bit got replaced by something that matches more than a single day, wouldn't this mostly do the trick? This is much easier than "rewriting the parser", so it seems that I'm overlooking some problems. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-04 15:14 [Orgmode] Slow speed of week and month views Christoph Groth @ 2017-08-05 3:07 ` Adam Porter 2017-08-05 21:09 ` Karl Voit 0 siblings, 1 reply; 22+ messages in thread From: Adam Porter @ 2017-08-05 3:07 UTC (permalink / raw) To: emacs-orgmode Christoph Groth <christoph@grothesque.org> writes: > Carsten Dominik wrote in 2010: > >> I am afraid I don't see any major speed improvements that could make >> this happen. Yes, one could parse all the files once, build a table >> in memory and get the entries for each day from there - >> but that comes down to a complete rewrite of the parser, maybe even >> to switching to an internal representation model for Org-mode. > >> I don't see that happening, I am afraid. Wow, you must have done some digging to find that, Christoph. :) > Computing the agenda month view takes 20 seconds in my case. That's > perhaps the most serious problem with orgmode as I (and I suppose > others as well) use it. It would be great if this issue could be > solved after all. > > Would it be really so difficult to do? The actual parsing seems to be > done in the function org-agenda-get-day-entries as called by > org-agenda-list. Inside org-agenda-get-day-entries the crucial bit > seems to be (org-agenda-today-p date). If that bit got replaced by > something that matches more than a single day, wouldn't this mostly do > the trick? > > This is much easier than "rewriting the parser", so it seems that I'm > overlooking some problems. I think Carsten is correct that it would require significant new code. I looked at the code you mentioned, but I think you missed the bigger structure. org-agenda-list first builds a list of day numbers from the span that is set, then it calls org-agenda-get-day-entries for each day number. The (org-agenda-today-p date) form in org-agenda-get-day-entries is only checked when the function is getting TODO items, and then it calls org-agenda-get-todos to actually get the entries. And as far as I can tell, org-agenda-list doesn't set the :todo selector at all, so the org-agenda-get-todos function isn't called when building a time-based agenda view; instead it's called for the org-todo-list command. This seems to be confirmed by the docstring for org-agenda-entry-types, which doesn't indicate that :todo is allowed as a type for daily/weekly agendas. I'm not as expert as Carsten or any of the current maintainers, but a possible way to speed up agenda creation for longer time spans would be to avoid parsing files repeatedly. IIUC they are parsed once for every date shown in the agenda. Instead, if they were parsed once and returned a list of items that was filtered or grouped once, that would probably be faster. But doing that would, as Carsten said, require rewriting a lot of code. Essentially you'd be creating a new agenda system, so you'd have to reimplement a lot of existing code. You could do it in parallel, rather than replacing existing code, so you wouldn't have to break the existing agenda system. But I don't think there's any way to shortcut writing the new system. I don't think there's any "low hanging fruit." Anyway, something based on org-map-entries might be interesting, but it's hard to say if it would actually be faster in the end. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-05 3:07 ` Adam Porter @ 2017-08-05 21:09 ` Karl Voit 2017-08-05 22:17 ` John Kitchin 2017-08-05 22:35 ` Nicolas Goaziou 0 siblings, 2 replies; 22+ messages in thread From: Karl Voit @ 2017-08-05 21:09 UTC (permalink / raw) To: emacs-orgmode Thanks for the insight! * Adam Porter <adam@alphapapa.net> wrote: > > But doing that would, as Carsten said, require rewriting a lot of code. > Essentially you'd be creating a new agenda system, so you'd have to > reimplement a lot of existing code. You could do it in parallel, rather > than replacing existing code, so you wouldn't have to break the existing > agenda system. But I don't think there's any way to shortcut writing > the new system. I don't think there's any "low hanging fruit." My daily agenda takes twenty seconds, my weekly approximately a minute and generating a monthly agenda is something I can only do when I plan to leave the computer for a longer break. Org-mode does not scale well, I'm afraid. Repeatedly going through all agenda files does not seem to be a very reasonable design choice for the general use-case. I would like to see an alternative approach for the future of Org-mode. -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-05 21:09 ` Karl Voit @ 2017-08-05 22:17 ` John Kitchin 2017-08-05 22:33 ` Nicolas Goaziou ` (3 more replies) 2017-08-05 22:35 ` Nicolas Goaziou 1 sibling, 4 replies; 22+ messages in thread From: John Kitchin @ 2017-08-05 22:17 UTC (permalink / raw) To: Karl Voit; +Cc: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 5244 bytes --] I can think of two possibilities for a future approach (besides a deep dive on profiling the current elisp to improve the speed there). They both involve some substantial coding though, and would probably add dependencies. I am curious what anyone things about these, or if there are other ideas. One is to use the new dynamic module capability to write an org parser in C, or a dedicated agenda function, which would presumably be faster than in elisp. This seems hard, and for me would certainly be a multiyear project I am sure! The downside of this is the need to compile the module. I don't know how easy it would be to make this work across platforms with the relatively easy install org-mode currently has. This could have a side benefit though of a c-lib that could be used by others to expand where org-mode is used. The other way that might work is to rely more heavily on a cached version of the files, perhaps in a different format than elisp, that is faster to work with. The approach I have explored in this is to index org files into a sqlite database. The idea then would be to generate the agenda from a sql query. I use something like this already to "find stuff in orgmode anywhere". One of the reasons I wrote this is the org-agenda list of files isn't practical for me because my files are so scattered on my file system. I had a need to be able to find TODOs in research projects in a pretty wide range of locations. The code I use is at https://github.com/jkitchin/scimax/blob/master/org-db.el, and from one database I can find headlines, contacts, locations, TODO headlines across my file system, all the files that contain a particular link, and my own recent org files. This approach relies on emacsql, and a set of hook functions to update the database whenever a file is changed. It is not robust, e.g. the file could be out of sync with the db if it is modified outside emacs, but this works well enough for me so far. Updated files get reindexed whenever emacs is idle. It was a compromise on walking the file system all the time or daily, or trying to use inotify and you can always run a command to prune/sync all the files any time you want. sqlite is ok, but with emacsql you cannot put strings in it directly (at least when I wrote the org-db code), which has limited it for full-text search so far. Also with text, the db got up to about 0.5 GB in size, and started slowing down. So it doesn't have text in it for now. It has all the other limitations of sqlite too, limited support for locking, single process.... I am moderately motivated to switch from sqlite to MongoDB, but the support for Mongo in emacs is pretty crummy (I tried writing a few traditional interfaces, but the performance was not that good, and limited since Mongo uses bson, and it is just not the same as json!). Why Mongo? Mostly because the Mongo query language is basically json and easy to generate in Emacs, unlike sql. Also, it is flexible and easy to adapt to new things, e.g. indexing src-blocks or tables or whatever org-element you want. (And I want to use Mongo for something else too ;). Obviously these all add dependencies, and might not be suitable for the core org-mode distribution. But I do think it is important to think about ways to scale org-mode while maintaining compatibility with the core. The main point of the database was to get a query language, persistence and good performance. I have also used caches to speed up using bibtex files, and my org-contacts with reasonable performance. These have been all elisp, with no additional dependencies. Maybe one could do something similar to keep an agenda cache that is persistent and updated via hook functions. Thoughts? John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Sat, Aug 5, 2017 at 5:09 PM, Karl Voit <devnull@karl-voit.at> wrote: > Thanks for the insight! > > * Adam Porter <adam@alphapapa.net> wrote: > > > > But doing that would, as Carsten said, require rewriting a lot of code. > > Essentially you'd be creating a new agenda system, so you'd have to > > reimplement a lot of existing code. You could do it in parallel, rather > > than replacing existing code, so you wouldn't have to break the existing > > agenda system. But I don't think there's any way to shortcut writing > > the new system. I don't think there's any "low hanging fruit." > > My daily agenda takes twenty seconds, my weekly approximately a > minute and generating a monthly agenda is something I can only do > when I plan to leave the computer for a longer break. > > Org-mode does not scale well, I'm afraid. > > Repeatedly going through all agenda files does not seem to be a very > reasonable design choice for the general use-case. I would like to > see an alternative approach for the future of Org-mode. > > -- > get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > > get Memacs from https://github.com/novoid/Memacs < > Personal Information Management > http://Karl-Voit.at/tags/pim/ > Emacs-related > http://Karl-Voit.at/tags/emacs/ > > > [-- Attachment #2: Type: text/html, Size: 6622 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-05 22:17 ` John Kitchin @ 2017-08-05 22:33 ` Nicolas Goaziou 2017-08-06 2:28 ` [Orgmode] " Tim Cross ` (2 subsequent siblings) 3 siblings, 0 replies; 22+ messages in thread From: Nicolas Goaziou @ 2017-08-05 22:33 UTC (permalink / raw) To: John Kitchin; +Cc: Karl Voit, emacs-orgmode@gnu.org Hello, John Kitchin <jkitchin@andrew.cmu.edu> writes: > I can think of two possibilities for a future approach (besides a deep dive > on profiling the current elisp to improve the speed there). They both > involve some substantial coding though, and would probably add > dependencies. I am curious what anyone things about these, or if there are > other ideas. These are interesting ideas, but I'd rather have a deep dive on profiling the current Elisp. > The main point of the database was to get a query language, persistence and > good performance. I have also used caches to speed up using bibtex files, > and my org-contacts with reasonable performance. These have been all elisp, > with no additional dependencies. Maybe one could do something similar to > keep an agenda cache that is persistent and updated via hook > functions. If an agenda cache is required, it can be very simple. Associate entries to agenda files. Whenever a file is modified, drop all the entries. No need to refresh it IMO. I doubt many agenda files are modified between two agenda calls. Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-05 22:17 ` John Kitchin 2017-08-05 22:33 ` Nicolas Goaziou @ 2017-08-06 2:28 ` Tim Cross 2017-08-06 2:36 ` Adam Porter 2017-08-06 7:54 ` Karl Voit 3 siblings, 0 replies; 22+ messages in thread From: Tim Cross @ 2017-08-06 2:28 UTC (permalink / raw) To: John Kitchin; +Cc: Karl Voit, emacs-orgmode@gnu.org I think the only viable first step is the profiling. One of the main reasons I like org-mode is that all the data is just text in files and it does not have any dependencies on other external systems apart for publishing/exporting. While there may be a need for external utilities to improve performance for large/complex org files, this should be the last resort. The more org relies on external packages, the more complex things become for maintaining support on multiple platforms. The first step is profiling so that we really understand where the bottlenecks are. It may be these can only be resolved in some cases using sqlite/mongodb/something-else, but I'm not sure if we know that yet. Tim John Kitchin writes: > I can think of two possibilities for a future approach (besides a deep dive > on profiling the current elisp to improve the speed there). They both > involve some substantial coding though, and would probably add > dependencies. I am curious what anyone things about these, or if there are > other ideas. > > One is to use the new dynamic module capability to write an org parser in > C, or a dedicated agenda function, which would presumably be faster than in > elisp. This seems hard, and for me would certainly be a multiyear project > I am sure! The downside of this is the need to compile the module. I don't > know how easy it would be to make this work across platforms with the > relatively easy install org-mode currently has. This could have a side > benefit though of a c-lib that could be used by others to expand where > org-mode is used. > > The other way that might work is to rely more heavily on a cached version > of the files, perhaps in a different format than elisp, that is faster to > work with. The approach I have explored in this is to index org files into > a sqlite database. The idea then would be to generate the agenda from a sql > query. I use something like this already to "find stuff in orgmode > anywhere". One of the reasons I wrote this is the org-agenda list of files > isn't practical for me because my files are so scattered on my file system. > I had a need to be able to find TODOs in research projects in a pretty wide > range of locations. > > The code I use is at > https://github.com/jkitchin/scimax/blob/master/org-db.el, and from one > database I can find headlines, contacts, locations, TODO headlines across > my file system, all the files that contain a particular link, and my own > recent org files. This approach relies on emacsql, and a set of hook > functions to update the database whenever a file is changed. It is not > robust, e.g. the file could be out of sync with the db if it is modified > outside emacs, but this works well enough for me so far. Updated files get > reindexed whenever emacs is idle. It was a compromise on walking the file > system all the time or daily, or trying to use inotify and you can always > run a command to prune/sync all the files any time you want. > > sqlite is ok, but with emacsql you cannot put strings in it directly (at > least when I wrote the org-db code), which has limited it for full-text > search so far. Also with text, the db got up to about 0.5 GB in size, and > started slowing down. So it doesn't have text in it for now. It has all the > other limitations of sqlite too, limited support for locking, single > process.... > > I am moderately motivated to switch from sqlite to MongoDB, but the support > for Mongo in emacs is pretty crummy (I tried writing a few traditional > interfaces, but the performance was not that good, and limited since Mongo > uses bson, and it is just not the same as json!). Why Mongo? Mostly because > the Mongo query language is basically json and easy to generate in Emacs, > unlike sql. Also, it is flexible and easy to adapt to new things, e.g. > indexing src-blocks or tables or whatever org-element you want. (And I want > to use Mongo for something else too ;). Obviously these all add > dependencies, and might not be suitable for the core org-mode distribution. > But I do think it is important to think about ways to scale org-mode while > maintaining compatibility with the core. > > The main point of the database was to get a query language, persistence and > good performance. I have also used caches to speed up using bibtex files, > and my org-contacts with reasonable performance. These have been all elisp, > with no additional dependencies. Maybe one could do something similar to > keep an agenda cache that is persistent and updated via hook functions. > > Thoughts? > > John > > ----------------------------------- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu > > > On Sat, Aug 5, 2017 at 5:09 PM, Karl Voit <devnull@karl-voit.at> wrote: > >> Thanks for the insight! >> >> * Adam Porter <adam@alphapapa.net> wrote: >> > >> > But doing that would, as Carsten said, require rewriting a lot of code. >> > Essentially you'd be creating a new agenda system, so you'd have to >> > reimplement a lot of existing code. You could do it in parallel, rather >> > than replacing existing code, so you wouldn't have to break the existing >> > agenda system. But I don't think there's any way to shortcut writing >> > the new system. I don't think there's any "low hanging fruit." >> >> My daily agenda takes twenty seconds, my weekly approximately a >> minute and generating a monthly agenda is something I can only do >> when I plan to leave the computer for a longer break. >> >> Org-mode does not scale well, I'm afraid. >> >> Repeatedly going through all agenda files does not seem to be a very >> reasonable design choice for the general use-case. I would like to >> see an alternative approach for the future of Org-mode. >> >> -- >> get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: >> > get Memacs from https://github.com/novoid/Memacs < >> Personal Information Management > http://Karl-Voit.at/tags/pim/ >> Emacs-related > http://Karl-Voit.at/tags/emacs/ >> >> >> -- Tim Cross ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-05 22:17 ` John Kitchin 2017-08-05 22:33 ` Nicolas Goaziou 2017-08-06 2:28 ` [Orgmode] " Tim Cross @ 2017-08-06 2:36 ` Adam Porter 2017-08-06 7:54 ` Karl Voit 3 siblings, 0 replies; 22+ messages in thread From: Adam Porter @ 2017-08-06 2:36 UTC (permalink / raw) To: emacs-orgmode Thanks for your comments, John, that is very interesting. I'll have to check out your db code. I'll drop a penny in the bucket with this: http://github.com/alphapapa/org-agenda-ng I spent a few hours trying an alternative approach that uses org-element-parse-buffer to parse each file, then operates on the parse tree it produces. I was hoping it might have a chance to be an improvement, but unfortunately it's not: org-element-parse-buffer is very slow in comparison to the existing agenda code, and it eats up almost all the time spent building the (very primitive) agenda views. So, I think all we need is for someone to write a version of org-element-parse-buffer in C or CL or whatever their favorite language that compiles to a fast binary may be. Then we can read that into Emacs and operate on the resulting tree quickly. Yep, that's ALL we need... ;) Seriously, though, it would be amazing if the new library support in Emacs could be used to interface with a fast Org parser that provided the same output as org-element-parse-buffer. Maybe it could even be added to Emacs core, as the Org file format doesn't change much. All that's way over my head, I'm afraid. Would some kind of bounty work for a project like this? I'd be willing to contribute a few dollars and some testing. :) I also gave a cursory look at profiling org-element-parse-buffer, but I don't think Nicolas left any low-hanging fruit there. But I'm not experienced with profiling code like that, so don't take my word for it. :) ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-05 22:17 ` John Kitchin ` (2 preceding siblings ...) 2017-08-06 2:36 ` Adam Porter @ 2017-08-06 7:54 ` Karl Voit 2017-08-06 13:47 ` John Kitchin 3 siblings, 1 reply; 22+ messages in thread From: Karl Voit @ 2017-08-06 7:54 UTC (permalink / raw) To: emacs-orgmode Hello John, Great to read your thoughts on the topic - I am a huge admirer of your work and we both seem to cope with similar issues with Org-mode. * John Kitchin <jkitchin@andrew.cmu.edu> wrote: > > One is to use the new dynamic module capability to write an org parser in > C, or a dedicated agenda function, which would presumably be faster than in > elisp. This seems hard, and for me would certainly be a multiyear project > I am sure! The downside of this is the need to compile the module. I don't > know how easy it would be to make this work across platforms with the > relatively easy install org-mode currently has. This could have a side > benefit though of a c-lib that could be used by others to expand where > org-mode is used. I'm not a fan of C at all but having the parser in C with the possibility to use this parser for external tools as well sounds awesome to me. After all, I've written a primitive parser for a sub-set of Org-mode for https://github.com/novoid/lazyblorg using Python. > The other way that might work is to rely more heavily on a cached version > of the files, perhaps in a different format than elisp, that is faster to > work with. The approach I have explored in this is to index org files into > a sqlite database. The idea then would be to generate the agenda from a sql > query. I use something like this already to "find stuff in orgmode > anywhere". One of the reasons I wrote this is the org-agenda list of files > isn't practical for me because my files are so scattered on my file system. > I had a need to be able to find TODOs in research projects in a pretty wide > range of locations. > > The code I use is at > https://github.com/jkitchin/scimax/blob/master/org-db.el, and from one > database I can find headlines, contacts, locations, TODO headlines across > my file system, all the files that contain a particular link, and my own > recent org files. I didn't try org-db.el yet. So far, I survived using "git grep" and counsel-grep [0] > I am moderately motivated to switch from sqlite to MongoDB Is org-db.el your standard way of accessing informations or do you use it only for occasional searches where you assume that the usual methods would be slow? > The main point of the database was to get a query language, persistence and > good performance. I have also used caches to speed up using bibtex files, > and my org-contacts with reasonable performance. These have been all elisp, > with no additional dependencies. Maybe one could do something similar to > keep an agenda cache that is persistent and updated via hook functions. Oh yeah. My org-contacts were unusable without at least some minor performance improvements as well. Most important to me: improving manipulation of properties using [1]. For example, org-set-property takes almost 20 seconds to give me its interactive input line in my main Org-mode file. This is a no-go. [1] helped me here a lot. [0] https://github.com/novoid/dot-emacs/blob/master/config.org#optimizing-search-methods [1] https://github.com/novoid/dot-emacs/blob/master/config.org#my-org-region-to-property--my-map-p -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Orgmode] Slow speed of week and month views 2017-08-06 7:54 ` Karl Voit @ 2017-08-06 13:47 ` John Kitchin 0 siblings, 0 replies; 22+ messages in thread From: John Kitchin @ 2017-08-06 13:47 UTC (permalink / raw) To: Karl Voit; +Cc: emacs-orgmode Karl Voit writes: > Hello John, > > Great to read your thoughts on the topic - I am a huge admirer of > your work and we both seem to cope with similar issues with > Org-mode. Thanks! I am an equal admirer of the Memacs package. I think we share some common interests there. I came across the mother of all demos recently: http://dougengelbart.org/events/1968-demo-highlights.html. It was inspired by the early Memex ideas. > > * John Kitchin <jkitchin@andrew.cmu.edu> wrote: >> >> One is to use the new dynamic module capability to write an org parser in >> C, or a dedicated agenda function, which would presumably be faster than in >> elisp. This seems hard, and for me would certainly be a multiyear project >> I am sure! The downside of this is the need to compile the module. I don't >> know how easy it would be to make this work across platforms with the >> relatively easy install org-mode currently has. This could have a side >> benefit though of a c-lib that could be used by others to expand where >> org-mode is used. > > I'm not a fan of C at all but having the parser in C with the > possibility to use this parser for external tools as well sounds > awesome to me. After all, I've written a primitive parser for a > sub-set of Org-mode for https://github.com/novoid/lazyblorg using > Python. I am also not so fond of C, but I am starting to learn it these days. I have had several use cases where I either generate or want to consume org in something other than Emacs. I don't know that C is the right thing to use, maybe a Cython library would work as well with a very thin C interface. It is on my bucket list to learn how to do something like that. > >> The other way that might work is to rely more heavily on a cached version >> of the files, perhaps in a different format than elisp, that is faster to >> work with. The approach I have explored in this is to index org files into >> a sqlite database. The idea then would be to generate the agenda from a sql >> query. I use something like this already to "find stuff in orgmode >> anywhere". One of the reasons I wrote this is the org-agenda list of files >> isn't practical for me because my files are so scattered on my file system. >> I had a need to be able to find TODOs in research projects in a pretty wide >> range of locations. >> >> The code I use is at >> https://github.com/jkitchin/scimax/blob/master/org-db.el, and from one >> database I can find headlines, contacts, locations, TODO headlines across >> my file system, all the files that contain a particular link, and my own >> recent org files. > > I didn't try org-db.el yet. So far, I survived using "git grep" and > counsel-grep [0] The main limitation with those for me is I don't know how you would find a headline with an EMAIL property and some tag, for example, since those are on different lines. > >> I am moderately motivated to switch from sqlite to MongoDB > > Is org-db.el your standard way of accessing informations or do you > use it only for occasional searches where you assume that the usual > methods would be slow? I think of it as my extended memory. For the buffers that are currently open/my agenda files/recent files/project files, I usually use the regular tools to move around and search. org-db is more for jumping to a headline I had open last month for example, or for files that are not in my agenda. Or to get a list of headlines with EMAIL properties and some tag combination from any org-file I have ever opened. This is just a query (https://github.com/jkitchin/scimax/blob/master/org-db.el#L499) on the sqlite db, and then I can build a completion command in helm or ivy to select them. (My elisp cached contacts code is what I usually use https://github.com/jkitchin/scimax/blob/master/contacts.el). I don't claim it is optimal, but it handles about 6200 contacts from 32 org-files easily! > >> The main point of the database was to get a query language, persistence and >> good performance. I have also used caches to speed up using bibtex files, >> and my org-contacts with reasonable performance. These have been all elisp, >> with no additional dependencies. Maybe one could do something similar to >> keep an agenda cache that is persistent and updated via hook functions. > > Oh yeah. My org-contacts were unusable without at least some minor > performance improvements as well. Most important to me: improving > manipulation of properties using [1]. The other reason I wanted org-db is also performance related. I have close to 3400 (and growing) org files indexed in it and I want to search across them, but I don't need them in my agenda list. I want a structured search, e.g. to search specifically for headlines with properties and tags, or links, or by file tags, src block, etc. I haven't gotten completely there yet, Another db approach is described here: https://github.com/wvxvw/sphinx-mode. It is more comprehensive than my sqlite implementation, and uses Sphinx on top of MySQL I think. I haven't worked with it though. > > For example, org-set-property takes almost 20 seconds to give me its > interactive input line in my main Org-mode file. This is a no-go. > [1] helped me here a lot. > > [0] https://github.com/novoid/dot-emacs/blob/master/config.org#optimizing-search-methods > [1] https://github.com/novoid/dot-emacs/blob/master/config.org#my-org-region-to-property--my-map-p -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-05 21:09 ` Karl Voit 2017-08-05 22:17 ` John Kitchin @ 2017-08-05 22:35 ` Nicolas Goaziou 2017-08-06 8:00 ` Karl Voit 1 sibling, 1 reply; 22+ messages in thread From: Nicolas Goaziou @ 2017-08-05 22:35 UTC (permalink / raw) To: Karl Voit; +Cc: Karl Voit, emacs-orgmode Hello, Karl Voit <devnull@Karl-Voit.at> writes: > My daily agenda takes twenty seconds, my weekly approximately a > minute and generating a monthly agenda is something I can only do > when I plan to leave the computer for a longer break. > > Org-mode does not scale well, I'm afraid. > > Repeatedly going through all agenda files does not seem to be a very > reasonable design choice for the general use-case. I would like to > see an alternative approach for the future of Org-mode. Well, we would at least need to profiling report as a starting point. Could you provide one? Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-05 22:35 ` Nicolas Goaziou @ 2017-08-06 8:00 ` Karl Voit 2017-08-06 8:15 ` Nicolas Goaziou 0 siblings, 1 reply; 22+ messages in thread From: Karl Voit @ 2017-08-06 8:00 UTC (permalink / raw) To: emacs-orgmode * Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote: > Hello, Hi Nicolas, > Karl Voit <devnull@Karl-Voit.at> writes: > >> My daily agenda takes twenty seconds, my weekly approximately a >> minute and generating a monthly agenda is something I can only do >> when I plan to leave the computer for a longer break. >> >> Org-mode does not scale well, I'm afraid. > > Well, we would at least need to profiling report as a starting point. > Could you provide one? First: I've occasionally mentioned all kinds of performance issues over the last years. I even started threads on how to improve things on a completely new level. I can provide many performance annoyances that affect me on a daily basis. So I am glad to be able to improve the situation for anybody. I have had slow agenda performance for many years and I had to live with it. Here is a current profiling report from my daily agenda: - command-execute 21948 98% - call-interactively 21948 98% - my-org-agenda 21518 96% - if 21518 96% - org-agenda-list 21518 96% - byte-code 21518 96% - byte-code 18530 82% - apply 18530 82% - org-agenda-get-day-entries 18530 82% - #<compiled 0x374b19> 14961 66% - org-agenda-get-scheduled 14957 66% - byte-code 13977 62% - org-is-habit-p 6424 28% - org-entry-get 6236 27% - org--property-local-values 5876 26% - org-get-property-block 4258 19% - org-inlinetask-in-task-p 1619 7% org-inlinetask-outline-regexp 4 0% - org-back-to-heading 1512 6% - funcall 1512 6% - #<compiled 0x53b0215> 1512 6% outline-back-to-heading 1041 4% org-before-first-heading-p 360 1% org-get-limited-outline-regexp 19 0% - org-at-planning-p 3396 15% - funcall 2796 12% - #<compiled 0xabed2b> 2796 12% - org-inlinetask-in-task-p 1202 5% org-inlinetask-outline-regexp 12 0% - org-back-to-heading 1075 4% - funcall 1071 4% - #<compiled 0x53ae983> 1071 4% outline-back-to-heading 575 2% org-get-limited-outline-regexp 12 0% - org-get-todo-state 2044 9% - org-back-to-heading 1456 6% - funcall 1456 6% - #<compiled 0x53aec35> 1456 6% outline-back-to-heading 1021 4% + org-agenda-skip 528 2% + org-get-tags-at 276 1% + org-agenda--timestamp-to-absolute 96 0% + org-habit-parse-todo 65 0% + org-agenda-format-item 32 0% org-get-priority 16 0% byte-code 8 0% string-prefix-p 4 0% org-outline-level 4 0% - #<compiled 0x374ae3> 2237 10% - org-agenda-get-deadlines 2237 10% - byte-code 1899 8% - org-at-planning-p 896 4% - funcall 736 3% - #<compiled 0xabed2b> 736 3% - org-back-to-heading 284 1% - funcall 280 1% - #<compiled 0x5145e8f> 280 1% outline-back-to-heading 144 0% - org-inlinetask-in-task-p 280 1% org-inlinetask-outline-regexp 4 0% org-get-limited-outline-regexp 4 0% - org-get-todo-state 599 2% - org-back-to-heading 399 1% - funcall 399 1% - #<compiled 0x514547b> 399 1% - outline-back-to-heading 251 1% outline-on-heading-p 4 0% + org-agenda-skip 104 0% + org-agenda--timestamp-to-absolute 12 0% abbreviate-file-name 4 0% - #<compiled 0x374b3d> 1308 5% - org-agenda-get-blocks 688 3% - byte-code 360 1% - org-agenda-skip 88 0% org-in-src-block-p 12 0% org-end-of-subtree 4 0% - org-get-todo-state 4 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x547456b> 4 0% outline-back-to-heading 4 0% - org-get-tags-at 4 0% - funcall 4 0% - #<compiled 0x54745d7> 4 0% - funcall 4 0% - #<compiled 0x5110c41> 4 0% match-string-no-properties 4 0% org-get-priority 4 0% time-to-days 4 0% + org-agenda-get-timestamps 620 2% + #<compiled 0x374b29> 24 0% - org-agenda-prepare 1952 8% - org-agenda-prepare-buffers 1848 8% - funcall 1844 8% - #<compiled 0x53d5ed1> 1844 8% + org-end-of-subtree 596 2% + org-refresh-category-properties 252 1% + org-at-heading-p 172 0% + org-set-regexps-and-options 120 0% + org-in-commented-heading-p 8 0% org-check-agenda-file 4 0% + org-agenda-mode 104 0% + org-agenda-finalize 772 3% + org-get-entries-from-diary 196 0% + org-agenda-finalize-entries 28 0% put-text-property 8 0% + counsel-M-x 430 1% + ... 334 1% + timer-event-handler 76 0% mouse-fixup-help-message 10 0% You can find my personal setup on https://github.com/novoid/dot-emacs/blob/master/config.org Things related to my agenda start at https://github.com/novoid/dot-emacs/blob/master/config.org#agenda (the report is from my non-work files) -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 8:00 ` Karl Voit @ 2017-08-06 8:15 ` Nicolas Goaziou 2017-08-06 9:01 ` Karl Voit 0 siblings, 1 reply; 22+ messages in thread From: Nicolas Goaziou @ 2017-08-06 8:15 UTC (permalink / raw) To: Karl Voit; +Cc: Karl Voit, emacs-orgmode Hello, Karl Voit <devnull@Karl-Voit.at> writes: > First: I've occasionally mentioned all kinds of performance issues > over the last years. That's important indeed. But performance issues needs a proper profiling report to be useful. The type of data being processed (i.e., something that would be unusual, like 9k clock lines in a LOGBOOK drawer). > I even started threads on how to improve things > on a completely new level. This doesn't ring a bell, sorry. > I can provide many performance annoyances that affect me on a daily > basis. Great! Hopefully some of them can be fixed. > So I am glad to be able to improve the situation for anybody. I have > had slow agenda performance for many years and I had to live with > it. > Here is a current profiling report from my daily agenda: Could you report it again running Org un-compiled (C-u M-x org-reload)? Also, another report using "M-x elp-instrument-package" would be great, too. Thank you. Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 8:15 ` Nicolas Goaziou @ 2017-08-06 9:01 ` Karl Voit 2017-08-06 9:13 ` Adam Porter 2017-08-06 9:26 ` Nicolas Goaziou 0 siblings, 2 replies; 22+ messages in thread From: Karl Voit @ 2017-08-06 9:01 UTC (permalink / raw) To: emacs-orgmode Hi Nicolas, * Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote: > > Karl Voit <devnull@Karl-Voit.at> writes: > >> First: I've occasionally mentioned all kinds of performance issues >> over the last years. btw, working within my Memacs agenda [1] with a bit under a million lines of Org-mode is the worst case scenario from my point of view so far. Jumping from one day to another could lead to waiting times of minutes. And then there is the single-thread issue which results in 100% CPU-core usage on only one of my four cores. If you consider modern intel i5 CPUs (like mine) and the fairly moderate data package of a few Megabytes, this is hard to explain to someone who has IT/programming background but no Emacs experience. > That's important indeed. But performance issues needs a proper profiling > report to be useful. The type of data being processed (i.e., something > that would be unusual, like 9k clock lines in a LOGBOOK drawer). I totally agree. With a fairly modified configuration (like mine on [0]) and a large set of long Org-mode files I can't publish, it is hard to do analysis here. So I can offer to report any performance annoyances and anything you need to execute (report) on my side. My Org-mode is from git/maint. Currently: release_9.0.3-261-g62dc27 but I can upgrade any time to the newest maint commit. >> I even started threads on how to improve things >> on a completely new level. > > This doesn't ring a bell, sorry. This was a comment, not a complaint ;-) >> So I am glad to be able to improve the situation for anybody. I have >> had slow agenda performance for many years and I had to live with >> it. > >> Here is a current profiling report from my daily agenda: > > Could you report it again running Org un-compiled (C-u M-x org-reload)? > Also, another report using "M-x elp-instrument-package" would be great, > too. Sure: I just learned about elp-instrument-package. What prefixes are of interest to you? un-compiled agenda profiler-report: The output here seems very nasty. I put the exported result for temporarily on: http://Karl-Voit.at/temp/2017-08-06_org-mode_agenda_profile_report_un-compiled.log - command-execute 21982 86% - call-interactively 21982 86% - counsel-M-x 17686 69% - ivy-read 17669 69% - read-from-minibuffer 17529 69% - minibuffer-inactive-mode 17367 68% - run-mode-hooks 17367 68% - run-hooks 17367 68% - yankpad-local-category-to-major-mode 17367 68% - yankpad--categories 17367 68% - yankpad--file-elements 17359 68% - org-element-parse-buffer 17282 68% - save-excursion 17027 67% - org-element--parse-elements 17027 67% - save-excursion 17027 67% - let 17027 67% - while 17027 67% - let* 17027 67% - cond 17019 67% - org-element--parse-elements 17019 67% - save-excursion 17019 67% - let 17019 67% - while 17019 67% - let* 17019 67% - cond 17019 67% - org-element--parse-elements 17019 67% - save-excursion 17019 67% - let 17015 67% - while 17015 67% - let* 17015 67% - cond 17015 67% - org-element--parse-elements 17015 67% - save-excursion 17007 66% - let 17007 66% - while 17003 66% - let* 16999 66% - cond 16590 65% - org-element--parse-objects 16586 65% - save-excursion 16586 65% - save-restriction 16586 65% - let 16302 64% - while 16294 64% - let 16242 63% - setq 16242 63% - cons 16242 63% - if 16242 63% - org-element--parse-objects 16238 63% - save-excursion 16234 63% - save-restriction 16234 63% - let 16234 63% - while 16230 63% - and 16230 63% - setq 16230 63% - org-element--object-lex 16230 63% - if 16230 63% - let* 16230 63% - save-excursion 16230 63% - while 16230 63% - let 16222 63% - if 16190 63% - progn 16190 63% - insert-before-markers 16190 63% - org-habit-build-graph 16190 63% - let* 16190 63% - while 16190 63% - let* 16190 63% - if 16190 63% - save-current-buffer 16186 63% - save-excursion 16186 63% - save-restriction 16186 63% - let 16186 63% - let 16186 63% - while 16186 63% - let* 16186 63% - cond 16186 63% - funcall 16186 63% - #<lambda 0xdbf41b167> 12831 50% - setq 12831 50% - cons 12831 50% - org-agenda-get-scheduled 12831 50% - let* 12831 50% - while 12831 50% - catch 11947 47% - let* 7991 31% - and 5499 21% - org-is-habit-p 5499 21% - string= 5499 21% - org-entry-get 5363 21% - org--property-local-values 5019 19% - org-get-property-block 3675 14% - org-inlinetask-in-task-p 1520 5% - save-excursion 1408 5% - let* 888 3% - or 880 3% - and 872 3% progn 316 1% looking-at-p 4 0% - org-inlinetask-outline-regexp 4 0% let 4 0% - org-back-to-heading 1315 5% - funcall 1311 5% - #<compiled 0xf0fcdb> 1311 5% outline-back-to-heading 955 3% org-before-first-heading-p 324 1% - org-get-limited-outline-regexp 28 0% - cond 28 0% not 24 0% let* 4 0% member-ignore-case 4 0% - let 1832 7% - unwind-protect 1788 7% - progn 1788 7% - org-get-todo-state 1636 6% - org-back-to-heading 1164 4% - funcall 1164 4% - #<compiled 0xefeb49> 1164 4% - outline-back-to-heading 812 3% outline-on-heading-p 4 0% - save-excursion 472 1% - let* 460 1% - org-get-tags-at 344 1% - funcall 344 1% - #<compiled 0x15e9259> 344 1% - funcall 344 1% - #<compiled 0x161ccf5> 344 1% - org-up-heading-safe 320 1% org-outline-level 28 0% - funcall 8 0% - #<compiled 0xaccfe1> 8 0% - org-back-to-heading 8 0% - funcall 8 0% - #<compiled 0x38d6a5> 8 0% - outline-back-to-heading 8 0% outline-on-heading-p 8 0% - org-back-to-heading 12 0% - funcall 12 0% - #<compiled 0x161cc6b> 12 0% outline-back-to-heading 12 0% match-string-no-properties 8 0% - org-agenda-format-item 36 0% - let* 36 0% - let 36 0% - unwind-protect 36 0% - progn 36 0% - let* 36 0% - org-agenda-get-category-icon 28 0% - catch 28 0% - let 28 0% - while 28 0% - if 28 0% - progn 28 0% - if 28 0% - throw 28 0% - apply 28 0% - create-image 28 0% - image-type 28 0% - image-type-from-file-header 28 0% insert-file-contents-literally 12 0% - if 4 0% - progn 4 0% - if 4 0% setq 4 0% setq 4 0% - org-add-props 32 0% - org-agenda-new-marker 16 0% let 4 0% - if 12 0% - + 12 0% org-get-priority 12 0% - make-string 20 0% - org-reduced-level 20 0% org-outline-level 12 0% - and 16 0% - org-habit-parse-todo 16 0% - save-excursion 16 0% - let* 16 0% - let* 8 0% - while 8 0% - and 8 0% funcall 8 0% - org-get-scheduled-time 4 0% - org-entry-get 4 0% - org-entry-properties 4 0% - funcall 4 0% - #<compiled 0xaadad7> 4 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x39ccdf5> 4 0% outline-back-to-heading 4 0% - org-no-properties 4 0% - nth 4 0% - org-heading-components 4 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x514a419> 4 0% outline-back-to-heading 4 0% buffer-substring 4 0% - cond 80 0% - org-agenda--timestamp-to-absolute 68 0% - condition-case 64 0% - apply 64 0% - org-time-string-to-absolute 60 0% - funcall 28 0% - #<compiled 0x42a89f1> 28 0% apply 20 0% org-parse-time-string 4 0% - org-closest-date 12 0% - time-to-days 12 0% time-to-day-in-year 8 0% - time-to-days 12 0% - time-to-day-in-year 12 0% date-leap-year-p 8 0% org-get-wdays 4 0% - and 4 0% string-match-p 4 0% - if 28 0% - cond 24 0% - or 24 0% - not 24 0% memq 24 0% - if 4 0% - or 4 0% and 4 0% string-prefix-p 4 0% - if 3100 12% - let 3100 12% - unwind-protect 3036 11% - progn 3036 11% - org-at-planning-p 2928 11% - funcall 2396 9% - #<compiled 0xabed2b> 2392 9% - org-inlinetask-in-task-p 1176 4% - save-excursion 1044 4% - let* 1032 4% - or 1028 4% - and 1028 4% progn 460 1% - org-inlinetask-outline-regexp 4 0% let 4 0% - org-back-to-heading 828 3% - funcall 828 3% - #<compiled 0xf167e5> 828 3% outline-back-to-heading 404 1% - org-get-limited-outline-regexp 32 0% - cond 32 0% not 32 0% - org-agenda-skip 844 3% - let 840 3% - if 584 2% - or 584 2% save-excursion 224 0% - and 164 0% - org-end-of-subtree 136 0% - org-back-to-heading 52 0% - funcall 52 0% - #<compiled 0x3a9b173> 52 0% outline-back-to-heading 40 0% org-in-src-block-p 44 0% - #<lambda 0x299c1f6eb2a54011> 2239 8% - setq 2239 8% - org-agenda-get-deadlines 2239 8% - let* 2239 8% - while 2231 8% - catch 1867 7% - if 911 3% - let 911 3% - unwind-protect 907 3% - progn 907 3% - org-at-planning-p 835 3% - funcall 647 2% - #<compiled 0xabed2b> 647 2% - org-back-to-heading 304 1% - funcall 304 1% - #<compiled 0x51968b5> 304 1% outline-back-to-heading 152 0% - org-inlinetask-in-task-p 228 0% - save-excursion 184 0% - let* 180 0% - or 176 0% and 176 0% - org-inlinetask-outline-regexp 4 0% let 4 0% - org-get-limited-outline-regexp 8 0% - cond 8 0% not 8 0% - let* 704 2% - let 640 2% - unwind-protect 628 2% - progn 628 2% - org-get-todo-state 564 2% - org-back-to-heading 352 1% - funcall 352 1% - #<compiled 0x5196805> 352 1% outline-back-to-heading 232 0% - cond 20 0% - org-agenda--timestamp-to-absolute 20 0% - condition-case 20 0% - apply 20 0% - org-time-string-to-absolute 16 0% time-to-days 8 0% - org-closest-date 4 0% org-parse-time-string 4 0% - funcall 4 0% - #<compiled 0xa7f257> 4 0% apply 4 0% - if 4 0% org-get-wdays 4 0% - org-agenda-skip 252 0% - let 252 0% - if 176 0% - or 176 0% save-excursion 56 0% - and 44 0% - org-end-of-subtree 32 0% - org-back-to-heading 16 0% - funcall 16 0% - #<compiled 0x4d3e4a1> 16 0% outline-back-to-heading 16 0% org-in-src-block-p 8 0% - list 8 0% - format 8 0% abbreviate-file-name 8 0% - #<lambda 0xd02f2dc11b> 1096 4% - setq 1096 4% - cons 1096 4% - org-agenda-get-blocks 644 2% - let* 644 2% - while 640 2% - catch 348 1% - let 200 0% - setq 96 0% - time-to-days 8 0% - org-time-string-to-time 4 0% - funcall 4 0% - #<compiled 0xa5f001> 4 0% org-parse-time-string 4 0% - if 8 0% - save-excursion 8 0% - setq 4 0% org-get-category 4 0% - if 4 0% - setq 4 0% - org-get-tags-at 4 0% - funcall 4 0% - #<compiled 0x194f7af> 4 0% - funcall 4 0% - #<compiled 0x194f7f7> 4 0% match-string-no-properties 4 0% - org-agenda-skip 148 0% - let 148 0% - if 64 0% - or 64 0% save-excursion 40 0% org-in-src-block-p 8 0% - and 4 0% org-end-of-subtree 4 0% - list 4 0% format 4 0% - org-agenda-get-timestamps 452 1% - let* 452 1% - while 452 1% - catch 308 1% - let 236 0% - unwind-protect 232 0% - progn 232 0% - if 204 0% - or 204 0% - org-at-planning-p 108 0% - funcall 72 0% - #<compiled 0xabed2b> 72 0% - org-inlinetask-in-task-p 40 0% - save-excursion 36 0% - let* 36 0% - or 36 0% - and 36 0% progn 12 0% - org-back-to-heading 28 0% - funcall 28 0% - #<compiled 0xe2c1bd> 28 0% outline-back-to-heading 12 0% - org-at-date-range-p 20 0% funcall 20 0% org-before-first-heading-p 20 0% - org-agenda-skip 28 0% - let 28 0% - if 20 0% - or 20 0% org-in-src-block-p 4 0% - and 4 0% org-end-of-subtree 4 0% save-excursion 4 0% - let* 72 0% - org-get-todo-state 40 0% - org-back-to-heading 28 0% - funcall 28 0% - #<compiled 0xe63629> 28 0% outline-back-to-heading 28 0% - save-excursion 8 0% - let* 8 0% - org-get-tags-at 8 0% - funcall 8 0% - #<compiled 0xa96477> 8 0% - funcall 8 0% - #<compiled 0xa964bf> 8 0% org-up-heading-safe 8 0% - if 8 0% - and 4 0% - if 4 0% - /= 4 0% - org-agenda--timestamp-to-absolute 4 0% - condition-case 4 0% - apply 4 0% org-time-string-to-absolute 4 0% - #<lambda 0xdbf41b167> 20 0% - setq 20 0% - cons 20 0% - org-agenda-get-sexps 20 0% - let* 20 0% while 20 0% - org-habit-get-faces 4 0% - let* 4 0% - if 4 0% - org-habit-deadline 4 0% let 4 0% - setq 32 0% - cond 32 0% - let* 32 0% - cond 32 0% - let 32 0% - and 28 0% - org-element-link-parser 20 0% - catch 20 0% - let 20 0% cond 20 0% - org-element-bold-parser 4 0% - save-excursion 4 0% - if 4 0% progn 4 0% - or 4 0% - and 4 0% - org-element-underline-parser 4 0% save-excursion 4 0% and 8 0% - if 4 0% - apply 4 0% org-element-set-contents 4 0% - and 52 0% - setq 52 0% - org-element--object-lex 48 0% - if 48 0% - let* 44 0% - save-excursion 44 0% - while 44 0% and 40 0% let 4 0% - if 8 0% - apply 4 0% - org-element-set-contents 4 0% cond 4 0% - let 4 0% - setq 4 0% - cons 4 0% - if 4 0% - org-element-put-property 4 0% - if 4 0% org-add-props 4 0% - if 276 1% - let 276 1% - org-indent-add-properties 276 1% - let 276 1% - unwind-protect 276 1% - progn 276 1% - save-excursion 276 1% - save-restriction 276 1% - let* 276 1% - let* 276 1% - unwind-protect 276 1% - progn 276 1% - while 276 1% - cond 276 1% - org-at-item-p 212 0% - save-excursion 212 0% - and 212 0% - org-list-in-valid-context-p 212 0% - not 212 0% - org-in-block-p 212 0% - funcall 208 0% - #<compiled 0x55fbbbb> 196 0% - org-between-regexps-p 144 0% - org-in-regexp 16 0% - funcall 12 0% #<compiled 0xd19097> 12 0% outline-next-heading 28 0% outline-previous-heading 24 0% - org-indent-set-line-properties 64 0% - let* 36 0% - cond 12 0% - concat 12 0% - org-add-props 8 0% concat 4 0% org-add-props 12 0% add-text-properties 8 0% - org-list-item-body-column 20 0% - save-excursion 20 0% - if 16 0% - + 8 0% progn 8 0% save-excursion 4 0% goto-char 4 0% org-element--parse-elements 4 0% - org-element--current-element 381 1% - save-excursion 381 1% - let 377 1% - cond 373 1% - let 241 0% - cond 213 0% - cond 149 0% - funcall 129 0% - #<compiled 0x51f78c1> 125 0% - server-execute-continuation 125 0% - funcall 125 0% - #<compiled 0x51f7937> 125 0% - #<compiled 0x51f7923> 125 0% - server-execute 125 0% - funcall 125 0% - #<compiled 0x51f7987> 125 0% - funcall 125 0% - #<compiled 0x51f79e9> 125 0% - server-visit-files 121 0% - apply 121 0% - ad-Advice-server-visit-files 121 0% - #<compiled 0xda1221> 121 0% - apply 121 0% - #<compiled 0xd2dbe3> 121 0% - find-file-noselect 121 0% - find-file-noselect-1 106 0% - after-find-file 106 0% - normal-mode 106 0% - fundamental-mode 104 0% - run-mode-hooks 104 0% - run-hooks 104 0% - yankpad-local-category-to-major-mode 104 0% - yankpad--categories 104 0% - yankpad--file-elements 104 0% - insert-file-contents 56 0% - org-indent-refresh-maybe 56 0% - org-indent-add-properties 56 0% - org-at-item-p 40 0% - org-list-in-valid-context-p 40 0% - org-in-block-p 40 0% - funcall 40 0% - #<compiled 0x51ae903> 40 0% - org-between-regexps-p 32 0% org-in-regexp 4 0% outline-next-heading 4 0% outline-previous-heading 4 0% org-list-item-body-column 4 0% - org-element-parse-buffer 48 0% - org-element--parse-elements 48 0% - org-element--parse-elements 48 0% - org-element--parse-elements 48 0% - org-element--parse-elements 48 0% - org-element--parse-elements 36 0% - org-element--parse-elements 24 0% - org-element--parse-objects 12 0% - org-element--object-lex 12 0% - org-element-link-parser 8 0% - funcall 8 0% #<compiled 0xae4fe7> 8 0% - org-element--parse-elements 8 0% org-element--parse-elements 4 0% - org-element--current-element 4 0% org-element-item-parser 4 0% org-element--current-element 4 0% - org-element--parse-objects 4 0% org-element--object-lex 4 0% org-element--current-element 4 0% - org-element--current-element 12 0% org-element-table-parser 4 0% - funcall 2 0% - #<compiled 0x22c097> 2 0% - set-auto-mode 2 0% set-auto-mode-1 2 0% - create-file-buffer 15 0% - apply 15 0% - uniquify--create-file-buffer-advice 15 0% uniquify-rationalize-file-buffer-names 15 0% - server-switch-buffer 4 0% - apply 4 0% - server-switch-buffer--with-editor-server-window-alist 4 0% - #<compiled 0xd303a9> 4 0% select-frame-set-input-focus 4 0% - mapc 20 0% - #<lambda 0x3e9d1a848d8f578e> 20 0% - let 20 0% - cond 20 0% - cond 20 0% - mapc 20 0% - #<lambda 0x3e9d1a848d8f578e> 20 0% - let 20 0% - cond 20 0% - cond 20 0% - mapc 20 0% - #<lambda 0x3e9d1a848d8f578e> 20 0% - let 20 0% - cond 16 0% - cond 16 0% - mapc 12 0% - #<lambda 0x3e9d1a848d8f578e> 8 0% let 8 0% org-element-type 4 0% - org-element-plain-list-parser 32 0% - or 28 0% - org-element--list-struct 28 0% - let 28 0% - save-excursion 24 0% - catch 24 0% - while 24 0% - cond 24 0% - let 24 0% - setq 12 0% - cons 12 0% - progn 12 0% - let 8 0% - list 8 0% - and 4 0% - let 4 0% - unwind-protect 4 0% progn 4 0% save-excursion 8 0% - while 4 0% - let 4 0% setq 4 0% and 4 0% - save-excursion 4 0% - let* 4 0% - list 4 0% - nconc 4 0% list 4 0% - org-element-paragraph-parser 8 0% - save-excursion 8 0% - let* 8 0% - let 8 0% - while 8 0% - not 8 0% - cond 8 0% - not 4 0% and 4 0% save-excursion 4 0% - looking-at 4 0% - org-item-re 4 0% - let 4 0% cond 4 0% org-element-drawer-parser 4 0% - org-element--collect-affiliated-keywords 28 0% - if 28 0% - let 20 0% - while 12 0% and 8 0% - let* 4 0% - if 4 0% or 4 0% - org-element-item-parser 40 0% - save-excursion 40 0% - let* 28 0% - progn 12 0% cond 4 0% - org-element-put-property 8 0% - let 4 0% - org-list-get-tag 4 0% org-list-get-nth 4 0% - list 4 0% list 4 0% let 4 0% - progn 40 0% - let* 40 0% - org-get-limited-outline-regexp 24 0% - cond 24 0% not 20 0% let* 4 0% - org-at-heading-p 4 0% outline-on-heading-p 4 0% - org-element-headline-parser 28 0% - save-excursion 28 0% - let* 28 0% if 8 0% and 8 0% org-trim 4 0% - min 4 0% - save-excursion 4 0% org-end-of-subtree 4 0% - org-element-paragraph-parser 12 0% - save-excursion 12 0% - let* 12 0% save-excursion 8 0% - let 4 0% - while 4 0% - not 4 0% - cond 4 0% - not 4 0% and 4 0% - org-element-table-row-parser 4 0% - save-excursion 4 0% - let* 4 0% and 4 0% - setq 12 0% - cons 8 0% - org-element-put-property 8 0% - if 8 0% setcar 8 0% - org-element-property 4 0% - if 4 0% plist-get 4 0% - and 4 0% - org-element-property 4 0% if 4 0% - org-element--current-element 8 0% - save-excursion 8 0% - let 8 0% - cond 8 0% - org-element-headline-parser 8 0% - save-excursion 8 0% - let* 8 0% - min 8 0% - save-excursion 8 0% org-end-of-subtree 8 0% - org-element--parse-elements 255 1% - org-element--parse-elements 255 1% - org-element--parse-elements 243 0% - org-element--parse-elements 243 0% - org-element--parse-elements 159 0% - org-element--parse-elements 119 0% - org-element--parse-elements 55 0% - org-element--parse-elements 40 0% - org-element--current-element 24 0% org-get-limited-outline-regexp 8 0% org-element-paragraph-parser 4 0% - org-element--parse-elements 8 0% org-element--current-element 4 0% - org-element--parse-elements 4 0% - org-element--current-element 4 0% org-element-paragraph-parser 4 0% - org-element--parse-objects 8 0% org-element--object-lex 8 0% - org-element--current-element 15 0% org-element-item-parser 11 0% - org-element--parse-objects 36 0% org-element--object-lex 28 0% - org-element--parse-objects 4 0% org-element--object-lex 4 0% - org-element--current-element 20 0% org-element-paragraph-parser 12 0% org-get-limited-outline-regexp 4 0% - org-at-heading-p 4 0% outline-on-heading-p 4 0% - org-element--parse-objects 28 0% - org-element--parse-objects 16 0% org-element--object-lex 16 0% - org-element--object-lex 8 0% - org-element-link-parser 4 0% - funcall 4 0% #<compiled 0xae4fe7> 4 0% - org-element--current-element 8 0% org-element-item-parser 4 0% - org-element--current-element 72 0% - org-element--list-struct 28 0% - funcall 28 0% - #<compiled 0x469e687> 24 0% match-string-no-properties 4 0% funcall 4 0% org-element-paragraph-parser 8 0% org-element-quote-block-parser 4 0% - org-element-src-block-parser 4 0% - org-unescape-code-in-string 4 0% - replace-regexp-in-string 4 0% apply 4 0% org-element--collect-affiliated-keywords 4 0% org-get-limited-outline-regexp 4 0% - org-element--parse-objects 8 0% - org-element--object-lex 8 0% - org-element-link-parser 4 0% funcall 4 0% - org-element--current-element 12 0% - org-element-headline-parser 8 0% - org-end-of-subtree 8 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x4674a3d> 4 0% outline-back-to-heading 4 0% - insert-file-contents 61 0% - org-indent-refresh-maybe 44 0% - org-indent-add-properties 44 0% - org-at-item-p 16 0% - org-list-in-valid-context-p 16 0% - org-in-block-p 16 0% funcall 12 0% org-indent-set-line-properties 12 0% - set-auto-coding 17 0% - find-auto-coding 17 0% - byte-code 17 0% sgml-html-meta-auto-coding-function 17 0% - org-mode 16 0% - org-install-agenda-files-menu 12 0% - org-agenda-files 12 0% - mapcar 12 0% #<compiled 0xac09f3> 12 0% - org-set-regexps-and-options 4 0% - org-remove-keyword-keys 4 0% mapcar 4 0% - org-element-map 8 0% - funcall 8 0% - #<compiled 0x4d65559> 8 0% - #<compiled 0x4d6553d> 8 0% - mapc 8 0% - #<compiled 0x4d6553d> 8 0% - mapc 8 0% - #<compiled 0x4d6553d> 8 0% - mapc 8 0% - #<compiled 0x4d6553d> 8 0% mapc 4 0% - ivy--exhibit 84 0% - ivy--insert-minibuffer 59 0% ivy--resize-minibuffer-to-fit 59 0% - ivy--filter 17 0% - funcall 17 0% - #<compiled 0x53aa837> 17 0% - cl-remove-if-not 17 0% - apply 17 0% - cl-remove 17 0% - apply 17 0% - cl-delete 13 0% #<compiled 0xe42463> 13 0% - ivy--format 4 0% - funcall 4 0% - #<compiled 0xe549cf> 4 0% - internal--after-with-selected-window 4 0% - select-window 4 0% - apply 4 0% ad-Advice-select-window 4 0% - timer-event-handler 15 0% - byte-code 15 0% apply 15 0% - redisplay_internal (C function) 8 0% - eval 8 0% - sml/generate-minor-modes 8 0% - rm--mode-list-as-string-list 4 0% mapcar 4 0% sml/fill-width-available 4 0% - #<compiled 0x4f2e365> 4 0% - ivy--minibuffer-setup 4 0% - ivy--exhibit 4 0% - ivy--format 4 0% - mapcar 4 0% counsel-M-x-transformer 4 0% - ivy-call 96 0% - #<compiled 0xd6c0df> 96 0% - command-execute 96 0% - call-interactively 96 0% - profiler-report 96 0% - profiler-report-cpu 96 0% - profiler-report-profile-other-window 92 0% - profiler-report-setup-buffer 92 0% - profiler-report-setup-buffer-1 76 0% - profiler-report-mode 76 0% - run-mode-hooks 76 0% - run-hooks 76 0% - yankpad-local-category-to-major-mode 76 0% - yankpad--categories 76 0% - yankpad--file-elements 76 0% - insert-file-contents 40 0% - org-indent-refresh-maybe 40 0% - org-indent-add-properties 40 0% - org-at-item-p 32 0% - org-list-in-valid-context-p 32 0% - org-in-block-p 32 0% - funcall 32 0% - #<compiled 0x2bb81bf> 28 0% org-between-regexps-p 16 0% outline-next-heading 4 0% outline-previous-heading 4 0% org-indent-set-line-properties 4 0% - org-element-parse-buffer 36 0% - org-element--parse-elements 36 0% - org-element--parse-elements 36 0% - org-element--parse-elements 28 0% - org-element--parse-elements 28 0% - org-element--parse-elements 20 0% - org-element--current-element 12 0% org-element-item-parser 4 0% org-element-table-row-parser 4 0% - org-element--parse-elements 8 0% - org-element--current-element 8 0% org-element-paragraph-parser 4 0% - org-element--current-element 8 0% - org-element--list-struct 4 0% funcall 4 0% - org-element--current-element 8 0% - org-element-headline-parser 4 0% replace-regexp-in-string 4 0% org-get-limited-outline-regexp 4 0% - profiler-report-render-calltree 16 0% - profiler-report-rerender-calltree 16 0% - profiler-report-render-calltree-1 16 0% - profiler-calltree-build 16 0% - profiler-calltree-build-unified 16 0% - maphash 16 0% - #<compiled 0x53da6bd> 4 0% gethash 4 0% profiler-cpu-profile 4 0% - ivy--reset-state 40 0% - ivy--filter 12 0% - ivy--re-filter 8 0% - funcall 8 0% - #<compiled 0x4d5e7e7> 8 0% - cl-remove-if-not 8 0% - apply 8 0% - cl-remove 4 0% #<compiled 0xa7facd> 4 0% - ivy--recompute-index 4 0% - ivy--preselect-index 4 0% cl-position 4 0% - my-org-agenda 2768 10% - if 2768 10% - org-agenda-list 2768 10% - catch 2768 10% - org-agenda-prepare 1662 6% - let 1662 6% - if 1662 6% - if 1662 6% - org-agenda-prepare-buffers 1652 6% - funcall 1652 6% - #<compiled 0x50e6899> 1648 6% - org-end-of-subtree 480 1% - org-back-to-heading 100 0% - funcall 100 0% - #<compiled 0x50e6a49> 100 0% - outline-back-to-heading 100 0% outline-on-heading-p 20 0% org-outline-level 12 0% - org-refresh-category-properties 268 1% - funcall 100 0% #<compiled 0x50e68f1> 100 0% - org-at-property-p 8 0% - org-get-property-block 8 0% - org-inlinetask-in-task-p 8 0% - save-excursion 8 0% - let* 8 0% - or 8 0% - and 8 0% progn 4 0% - org-end-of-subtree 8 0% - org-back-to-heading 8 0% - funcall 8 0% #<compiled 0x50e6981> 8 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x50e6929> 4 0% outline-back-to-heading 4 0% - org-at-heading-p 160 0% outline-on-heading-p 128 0% - org-set-regexps-and-options 140 0% - org--setup-collect-keywords 140 0% - org-element-at-point 32 0% - save-excursion 32 0% - save-restriction 32 0% - let 32 0% - cond 32 0% - org-element--parse-to 28 0% - catch 28 0% - save-excursion 28 0% - save-restriction 28 0% - let* 28 0% - let 28 0% - while 28 0% - if 24 0% - setq 24 0% - org-element--current-element 24 0% - save-excursion 24 0% - let 24 0% - cond 24 0% - let 24 0% - cond 24 0% - cond 24 0% - org-element-keyword-parser 16 0% - save-excursion 12 0% - let 12 0% - list 8 0% nconc 8 0% - org-trim 4 0% replace-regexp-in-string 4 0% - org-element-comment-parser 4 0% - save-excursion 4 0% - let* 4 0% prog2 4 0% - let 4 0% cond 4 0% - progn 4 0% - let* 4 0% - org-at-heading-p 4 0% outline-on-heading-p 4 0% - insert-file-contents 4 0% - set-auto-coding 4 0% find-auto-coding 4 0% org-in-commented-heading-p 16 0% delete-dups 4 0% - org-agenda-mode 10 0% - easy-menu-change 10 0% - easy-menu-create-menu 10 0% mapcar 10 0% - let* 1106 4% - org-agenda-finalize 1004 3% - if 1004 3% - save-excursion 1004 3% - let 1004 3% - if 996 3% - progn 620 2% - org-agenda-dim-blocked-tasks 620 2% - save-excursion 620 2% - let 620 2% - while 620 2% - let 620 2% - if 620 2% - and 620 2% - save-current-buffer 620 2% - save-excursion 616 2% - org-entry-blocked-p 608 2% - run-hook-with-args-until-failure 504 1% - org-block-todo-from-children-or-siblings-or-parent 372 1% - funcall 372 1% - #<compiled 0x374abf> 368 1% - org-entry-get 120 0% - org--property-local-values 108 0% - org-get-property-block 68 0% - org-inlinetask-in-task-p 28 0% - save-excursion 28 0% - let* 28 0% - or 28 0% - and 28 0% progn 20 0% - org-up-heading-safe 116 0% org-outline-level 16 0% outline-next-heading 32 0% - org-entry-is-done-p 20 0% org-get-todo-state 20 0% - org-entry-is-todo-p 4 0% org-get-todo-state 4 0% - org-depend-block-todo 132 0% - let* 132 0% - catch 132 0% - setq 84 0% - org-entry-get 76 0% - org--property-local-values 72 0% - org-get-property-block 32 0% - org-inlinetask-in-task-p 20 0% - save-excursion 20 0% - let* 20 0% - or 20 0% - and 20 0% progn 20 0% - while 48 0% - cond 48 0% - setq 44 0% - org-find-entry-with-id 44 0% - org-find-property 44 0% - funcall 44 0% - #<compiled 0x1a2c4ad> 44 0% - org-at-property-p 12 0% - org-get-property-block 4 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x4e380e7> 4 0% outline-back-to-heading 4 0% - save-excursion 4 0% if 4 0% - org-entry-get 92 0% - org--property-local-values 76 0% - org-get-property-block 44 0% - org-inlinetask-in-task-p 16 0% - save-excursion 16 0% - let* 16 0% - or 16 0% - and 16 0% progn 12 0% org-before-first-heading-p 8 0% - org-get-limited-outline-regexp 4 0% - cond 4 0% not 4 0% - org-entry-properties 8 0% - funcall 4 0% #<compiled 0x4f2e4f7> 4 0% - let 364 1% - save-excursion 364 1% - while 364 1% - if 364 1% - progn 364 1% - put-text-property 364 1% - let 364 1% - save-excursion 364 1% - save-excursion 364 1% - save-restriction 364 1% - delete-dups 352 1% - mapcar 352 1% - org-get-tags-at 348 1% - funcall 348 1% - #<compiled 0x55a0661> 348 1% - funcall 348 1% - #<compiled 0x55a06a9> 348 1% - org-up-heading-safe 336 1% org-outline-level 28 0% - funcall 12 0% - #<compiled 0xaccfe1> 12 0% - org-back-to-heading 12 0% - funcall 12 0% - #<compiled 0x4f2f733> 12 0% - outline-back-to-heading 12 0% outline-on-heading-p 12 0% - org-back-to-heading 4 0% - funcall 4 0% - #<compiled 0x40cb849> 4 0% - outline-back-to-heading 4 0% outline-on-heading-p 4 0% match-string-no-properties 4 0% - org-agenda-align-tags 12 0% - let 12 0% - save-excursion 12 0% - while 12 0% - add-text-properties 4 0% - flycheck-handle-change 4 0% run-at-time 4 0% - delete-region 4 0% - flycheck-handle-change 4 0% - run-at-time 4 0% timer-relative-time 4 0% - save-excursion 4 0% - while 4 0% - org-activate-links 4 0% - funcall 4 0% - #<compiled 0xe55619> 4 0% - org-element-link-parser 4 0% - catch 4 0% - let 4 0% - cond 4 0% cond 4 0% - run-hooks 4 0% - #<lambda 0x363f84cb9b50089c> 4 0% remove-text-properties 4 0% - while 52 0% - if 44 0% - progn 32 0% - if 32 0% - insert 28 0% - org-agenda-finalize-entries 28 0% - let 28 0% - setq 24 0% - mapcar 24 0% - sort 20 0% - org-entries-lessp 20 0% - let* 20 0% - if 20 0% - setq 20 0% - funcall 20 0% - bh/agenda-sort 20 0% - let 20 0% - cond 20 0% - cond 16 0% - apply 16 0% bh/is-due-deadline 4 0% - bh/is-not-scheduled-or-deadline 4 0% - and 4 0% - not 4 0% - bh/is-deadline 4 0% - or 4 0% bh/is-late-deadline 4 0% bh/is-scheduled-late 4 0% bh/is-late-deadline 4 0% - org-agenda-highlight-todo 4 0% - let 4 0% - if 4 0% - let 4 0% - if 4 0% - and 4 0% equal 4 0% - let 12 0% - setq 12 0% - org-get-entries-from-diary 12 0% - let* 12 0% - save-excursion 12 0% - let 12 0% - unwind-protect 12 0% - progn 12 0% - funcall 12 0% - diary-list-entries 12 0% - diary-fancy-display 8 0% - special-mode 4 0% - run-mode-hooks 4 0% - run-hooks 4 0% - mode-icons-reset 4 0% - mode-icons-set-current-mode-icon 4 0% - mode-icons-set-mode-icon 4 0% - mode-icons-get-mode-icon 4 0% - mode-icons-get-icon-spec 4 0% - funcall 4 0% #<compiled 0x533ab05> 4 0% - diary-fancy-display-mode 4 0% - run-mode-hooks 4 0% - run-hooks 4 0% - yankpad-local-category-to-major-mode 4 0% - yankpad--categories 4 0% - yankpad--file-elements 4 0% - org-mode 4 0% - org-install-agenda-files-menu 4 0% - org-agenda-files 4 0% - mapcar 4 0% #<compiled 0xac09f3> 4 0% - while 8 0% - catch 8 0% - let 8 0% - cond 8 0% - setq 8 0% - apply 8 0% - org-agenda-get-day-entries 8 0% - let* 8 0% - if 8 0% - org-get-agenda-file-buffer 4 0% org-find-base-buffer-visiting 4 0% - if 50 0% - and 34 0% - pos-visible-in-window-p 4 0% - eval 4 0% - sml/generate-minor-modes 4 0% - rm--mode-list-as-string-list 4 0% mapcar 4 0% - byte-code 659 2% - read-file-name 659 2% - read-file-name-default 659 2% - completing-read 659 2% - completing-read-default 659 2% - read-from-minibuffer 595 2% - minibuffer-inactive-mode 375 1% - run-mode-hooks 375 1% - run-hooks 375 1% - yankpad-local-category-to-major-mode 375 1% - yankpad--categories 375 1% - yankpad--file-elements 375 1% - insert-file-contents 316 1% - org-indent-refresh-maybe 316 1% - org-indent-add-properties 316 1% - org-at-item-p 280 1% - org-list-in-valid-context-p 280 1% - org-in-block-p 280 1% - funcall 276 1% - #<compiled 0x4dbba7b> 268 1% - org-between-regexps-p 188 0% - org-in-regexp 32 0% - funcall 20 0% #<compiled 0x533db2d> 8 0% outline-next-heading 44 0% outline-previous-heading 28 0% org-indent-set-line-properties 16 0% - org-element-parse-buffer 52 0% - org-element--parse-elements 52 0% - org-element--parse-elements 52 0% - org-element--parse-elements 36 0% - org-element--parse-elements 36 0% - org-element--current-element 28 0% org-element-paragraph-parser 4 0% org-element--collect-affiliated-keywords 4 0% org-element--list-struct 4 0% - org-element--parse-objects 4 0% org-element--object-lex 4 0% - org-element--parse-elements 4 0% org-element--current-element 4 0% - org-element--current-element 16 0% - org-element-headline-parser 12 0% org-end-of-subtree 4 0% org-get-limited-outline-regexp 4 0% - org-mode 7 0% - org-install-agenda-files-menu 7 0% - org-agenda-files 7 0% - mapcar 7 0% #<compiled 0xac09f3> 7 0% - redisplay_internal (C function) 27 0% - #<compiled 0x408127> 23 0% - apply 23 0% - redisplay--update-region-highlights 23 0% - funcall 17 0% - #<compiled 0x24f542f> 17 0% - redisplay--update-region-highlight 17 0% - #<compiled 0x1826f19> 17 0% apply 17 0% - eval 4 0% - list 4 0% - nyan-create 4 0% nyan-add-scroll-handler 4 0% sml/generate-position-help 18 0% - command-execute 2 0% - call-interactively 2 0% delete-backward-char 2 0% - next-line 347 1% - funcall 347 1% - #<compiled 0x470bbab> 347 1% - line-move 347 1% - line-move-visual 347 1% - posn-at-point 160 0% - eval 160 0% - sml/generate-minor-modes 140 0% - sml/fill-width-available 122 0% - format-mode-line 104 0% - eval 104 0% - list 104 0% - nyan-create 50 0% nyan-add-scroll-handler 11 0% create-image 9 0% nyan-catface-index 6 0% - rm--mode-list-as-string-list 18 0% mapcar 13 0% - list 15 0% - nyan-create 10 0% create-image 6 0% mode-icons--generate-narrow 5 0% - completing-read-default 248 0% - read-from-minibuffer 244 0% - minibuffer-inactive-mode 220 0% - run-mode-hooks 220 0% - run-hooks 220 0% - yankpad-local-category-to-major-mode 220 0% - yankpad--categories 220 0% - yankpad--file-elements 220 0% - org-element-parse-buffer 160 0% - org-element--parse-elements 160 0% - org-element--parse-elements 156 0% - org-element--parse-elements 144 0% - org-element--parse-elements 132 0% - org-element--parse-elements 76 0% - org-element--current-element 36 0% org-element-item-parser 12 0% org-get-limited-outline-regexp 8 0% org-at-heading-p 4 0% - org-element--parse-elements 20 0% org-element--parse-elements 12 0% org-element--current-element 8 0% - org-element--parse-objects 20 0% org-element--object-lex 16 0% - org-element--current-element 36 0% - org-element--list-struct 24 0% funcall 24 0% org-get-limited-outline-regexp 8 0% org-element-paragraph-parser 4 0% - org-element--parse-objects 16 0% org-element--object-lex 16 0% - org-element--current-element 4 0% org-element-section-parser 4 0% - org-element--current-element 12 0% - org-element-headline-parser 8 0% org-element--parse-objects 4 0% org-element--get-node-properties 4 0% - org-element--current-element 4 0% - org-element-headline-parser 4 0% org-end-of-subtree 4 0% - insert-file-contents 40 0% - org-indent-refresh-maybe 40 0% - org-indent-add-properties 40 0% org-indent-set-line-properties 24 0% - org-at-item-p 8 0% - org-list-in-valid-context-p 4 0% org-in-block-p 4 0% - org-mode 16 0% - org-set-regexps-and-options 8 0% - org-make-options-regexp 8 0% - regexp-opt 8 0% - regexp-opt-group 8 0% - regexp-opt-group 8 0% - mapcar 4 0% #<compiled 0x276407> 4 0% - regexp-opt-group 4 0% - regexp-opt-group 4 0% - regexp-opt-group 4 0% - regexp-opt-group 4 0% - regexp-opt-group 4 0% - regexp-opt-group 4 0% - regexp-opt-group 4 0% regexp-opt-group 4 0% - org-install-agenda-files-menu 8 0% - org-agenda-files 8 0% - mapcar 8 0% #<compiled 0xac09f3> 8 0% - redisplay_internal (C function) 4 0% - eval 4 0% - sml/generate-minor-modes 4 0% sml/fill-width-available 4 0% - scroll-up-command 116 0% - scroll-up 39 0% - eval 39 0% - sml/generate-minor-modes 31 0% - sml/fill-width-available 24 0% - format-mode-line 18 0% - eval 18 0% list 18 0% - rm--mode-list-as-string-list 7 0% - mapcar 7 0% - rm--propertize 2 0% eval 2 0% list 8 0% - kill-buffer 90 0% - server-kill-buffer-query-function 46 0% - yes-or-no-p 46 0% - read-key 46 0% - funcall 46 0% - #<compiled 0x4d6559d> 46 0% - read-key-sequence-vector 46 0% - timer-event-handler 3 0% - byte-code 3 0% apply 3 0% - yes-or-no-p 25 0% - read-key 25 0% - funcall 25 0% - #<compiled 0x54a2c61> 25 0% - read-key-sequence-vector 25 0% - timer-event-handler 4 0% - byte-code 4 0% apply 4 0% - server-kill-buffer 19 0% - server-buffer-done 19 0% - server-delete-client 19 0% - delete-process 19 0% - redisplay_internal (C function) 4 0% - eval 4 0% - sml/generate-minor-modes 4 0% sml/fill-width-available 4 0% - previous-line 50 0% - funcall 50 0% - #<compiled 0x5325b03> 50 0% - line-move 50 0% - line-move-visual 34 0% - posn-at-point 2 0% - eval 2 0% - sml/generate-minor-modes 2 0% rm--mode-list-as-string-list 2 0% - default-line-height 13 0% default-font-height 4 0% - line-move-partial 3 0% - default-line-height 2 0% default-font-height 2 0% - profiler-report-write-profile 18 0% - profiler-write-profile 18 0% - write-file 14 0% - save-buffer 9 0% - basic-save-buffer 9 0% - funcall 4 0% - #<compiled 0x22e131> 4 0% - run-hooks 4 0% delete-trailing-whitespace 4 0% - basic-save-buffer-1 3 0% basic-save-buffer-2 3 0% - vc-before-save 2 0% - byte-code 2 0% - vc-backend 2 0% - vc-registered 2 0% - byte-code 2 0% - mapc 2 0% - #<compiled 0x27e217> 2 0% - vc-call-backend 2 0% - apply 2 0% - vc-sccs-registered 2 0% - vc-default-registered 2 0% - vc-check-master-templates 2 0% - mapcar 2 0% #<compiled 0x27e61d> 2 0% - set-visited-file-name 5 0% - apply 5 0% - ad-Advice-set-visited-file-name 5 0% - #<compiled 0x22d685> 5 0% - funcall 5 0% - #<compiled 0x54d8005> 5 0% - set-auto-mode 5 0% assoc-default 5 0% + timer-event-handler 1137 4% + ... 1063 4% + mouse-fixup-help-message 622 2% + redisplay_internal (C function) 560 2% undefined 18 0% tooltip-hide 1 0% + yas--post-command-handler 1 0% [0] https://github.com/novoid/dot-emacs [1] https://github.com/novoid/Memacs -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 9:01 ` Karl Voit @ 2017-08-06 9:13 ` Adam Porter 2017-08-06 10:03 ` Karl Voit 2017-08-06 9:26 ` Nicolas Goaziou 1 sibling, 1 reply; 22+ messages in thread From: Adam Porter @ 2017-08-06 9:13 UTC (permalink / raw) To: emacs-orgmode Karl Voit <devnull@Karl-Voit.at> writes: > With a fairly modified configuration (like mine on [0]) and a large > set of long Org-mode files I can't publish, it is hard to do > analysis here. So I can offer to report any performance annoyances > and anything you need to execute (report) on my side. It might be helpful if you posted a censored version of your large Org files somewhere. There's a function by Nicolas that replaces all the characters with "x", and there's also a function that replaces words with random words of the same length (that one takes a while to run). > I just learned about elp-instrument-package. What prefixes are of interest to > you? FYI, here's a handy "elp-profile" macro that automatically de-instruments after running. It shows the top 20 functions by default, but you can adjust that easily. https://alphapapa.github.io/emacs-package-dev-handbook/#orgc830139 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 9:13 ` Adam Porter @ 2017-08-06 10:03 ` Karl Voit 2017-08-06 10:28 ` Adam Porter 0 siblings, 1 reply; 22+ messages in thread From: Karl Voit @ 2017-08-06 10:03 UTC (permalink / raw) To: emacs-orgmode Hi Adam, * Adam Porter <adam@alphapapa.net> wrote: > Karl Voit <devnull@Karl-Voit.at> writes: > >> With a fairly modified configuration (like mine on [0]) and a large >> set of long Org-mode files I can't publish, it is hard to do >> analysis here. So I can offer to report any performance annoyances >> and anything you need to execute (report) on my side. > > It might be helpful if you posted a censored version of your large Org > files somewhere. There's a function by Nicolas that replaces all the > characters with "x", and there's also a function that replaces words > with random words of the same length (that one takes a while to run). Nicolas, can you provide an URL for this? Sounds interesting. >> I just learned about elp-instrument-package. What prefixes are of interest to >> you? > > FYI, here's a handy "elp-profile" macro that automatically > de-instruments after running. It shows the top 20 functions by default, > but you can adjust that easily. > > https://alphapapa.github.io/emacs-package-dev-handbook/#orgc830139 I executed following code below (without changing the prefixes yet for testing purposes) which resulted in my usual Agenda but no additional buffer showing any results. M-x elp-results is also empty. What did I do the wrong way? (defmacro elp-profile (times &rest body) "Call this macro from an Org source block and you'll get a results block showing which 20 functions were called the most times, how long they took to run, etc. Set prefixes to a list of strings matching the prefixes of the functions you want to instrument. Use it like this: (elp-profile 10 (goto-char (point-min)) (search-forward \"something\")) " (declare (indent defun)) `(let ((prefixes '("string-" "s-" "buffer-" "append" "delq" "map" "list" "car" "save-" "outline-" "delete-dups" "sort" "line-" "nth" "concat" "char-to-string" "rx-" "goto-" "when" "search-" "re-")) output) (dolist (prefix prefixes) (elp-instrument-package prefix)) (dotimes (x ,times) ,@body) (elp-results) (elp-restore-all) (point-min) (forward-line 20) (delete-region (point) (point-max)) (setq output (buffer-substring-no-properties (point-min) (point-max))) (kill-buffer) (delete-window) output)) (elp-profile 1 (goto-char (point-min)) (org-agenda-list)) -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 10:03 ` Karl Voit @ 2017-08-06 10:28 ` Adam Porter 0 siblings, 0 replies; 22+ messages in thread From: Adam Porter @ 2017-08-06 10:28 UTC (permalink / raw) To: emacs-orgmode Karl Voit <devnull@Karl-Voit.at> writes: >> It might be helpful if you posted a censored version of your large Org >> files somewhere. There's a function by Nicolas that replaces all the >> characters with "x", and there's also a function that replaces words >> with random words of the same length (that one takes a while to run). > > Nicolas, can you provide an URL for this? Sounds interesting. I have it saved, here you go: #+BEGIN_SRC elisp (defun scramble-contents () (interactive) (let ((tree (org-element-parse-buffer))) (org-element-map tree '(code comment comment-block example-block fixed-width keyword link node-property plain-text verbatim) (lambda (obj) (cl-case (org-element-type obj) ((code comment comment-block example-block fixed-width keyword node-property verbatim) (let ((value (org-element-property :value obj))) (org-element-put-property obj :value (replace-regexp-in-string "[[:alnum:]]" "x" value)))) (link (unless (string= (org-element-property :type obj) "radio") (org-element-put-property obj :raw-link "http://orgmode.org"))) (plain-text (org-element-set-element obj (replace-regexp-in-string "[[:alnum:]]" "x" obj))))) nil nil nil t) (let ((buffer (get-buffer-create "*Scrambled text*"))) (with-current-buffer buffer (insert (org-element-interpret-data tree)) (goto-char (point-min))) (switch-to-buffer buffer)))) #+END_SRC The other one can be found here: https://gist.github.com/alphapapa/2d141b60ccbe92f1b90000debde2ddd2 > I executed following code below (without changing the prefixes yet > for testing purposes) which resulted in my usual Agenda but no > additional buffer showing any results. M-x elp-results is also > empty. > > What did I do the wrong way? > > (defmacro elp-profile (times &rest body) > "Call this macro from an Org source block and you'll get a results block > showing which 20 functions were called the most times, how long they > took to run, etc. Set prefixes to a list of strings matching the prefixes > of the functions you want to instrument. Did you read the docstring? ;) It's intended to be run from an Org source block with Babel. Sorry, I should have emphasized that. You can rip out the lines that mess with the window and buffer if you just want to run it directly and leave the results buffer open. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 9:01 ` Karl Voit 2017-08-06 9:13 ` Adam Porter @ 2017-08-06 9:26 ` Nicolas Goaziou 2017-08-06 10:18 ` Karl Voit 1 sibling, 1 reply; 22+ messages in thread From: Nicolas Goaziou @ 2017-08-06 9:26 UTC (permalink / raw) To: Karl Voit; +Cc: Karl Voit, emacs-orgmode Karl Voit <devnull@Karl-Voit.at> writes: > I just learned about elp-instrument-package. What prefixes are of interest to > you? "org-" prefix. The nice thing about `elp-instrument-package' is that is reports the number of times a function is called. > un-compiled agenda profiler-report: Thank you. However, there is much cruft going on there. "yankpad-", "ivy-", "yas-"... Even `profiler-report-write-profile' is registered in there. Could you try to minimize as much as possible the non-Org interaction? You may need to load a minimal config to do so. You could also try to evaluate the command you want to time with M-: instead of M-x, e.g. M-: (org-agenda nil "a") Thanks. Regards, ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 9:26 ` Nicolas Goaziou @ 2017-08-06 10:18 ` Karl Voit 2017-08-07 11:41 ` Nicolas Goaziou 0 siblings, 1 reply; 22+ messages in thread From: Karl Voit @ 2017-08-06 10:18 UTC (permalink / raw) To: emacs-orgmode * Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote: > Karl Voit <devnull@Karl-Voit.at> writes: > >> I just learned about elp-instrument-package. What prefixes are of interest to >> you? > > "org-" prefix. The nice thing about `elp-instrument-package' is that is > reports the number of times a function is called. Results at the end of this posting. >> un-compiled agenda profiler-report: > > Thank you. However, there is much cruft going on there. "yankpad-", > "ivy-", "yas-"... Even `profiler-report-write-profile' is registered in > there. Yes, this is my configuration ;-) I'm no expert in interpreting the results but as far as I understood it, the cruft you mentioned takes only a fraction of CPU time for the task. > Could you try to minimize as much as possible the non-Org interaction? > You may need to load a minimal config to do so. You could also try to > evaluate the command you want to time with M-: instead of M-x, e.g. > > M-: (org-agenda nil "a") I may take some time to come up with a minimum config and my agenda files. However, in case this is much faster compared to my current situation, this does not help me with my issues and just shows that Org itself does not have urgent performance issues, right? org-agenda-list 1 22.456601085 22.456601085 org-agenda-get-day-entries 17 18.255724348 1.0738661381 org-agenda-get-scheduled 17 14.40543005 0.8473782382 org-element--parse-elements 2712 8.0038418899 0.0029512691 org-entry-get 2002 6.3268592120 0.0031602693 org--property-local-values 1937 6.1333810950 0.0031664331 org-is-habit-p 1779 5.9716177949 0.0033567272 org-get-property-block 1943 5.5327713039 0.0028475405 org-back-to-heading 7664 5.1811751059 0.0006760405 org-at-planning-p 2338 4.4562334949 0.0019060023 org-inlinetask-in-task-p 4191 3.4042555110 0.0008122776 org-get-todo-state 2284 3.3749943680 0.0014776682 org-agenda-get-deadlines 17 2.7361401300 0.1609494194 org-agenda-prepare 1 2.200086025 2.200086025 org-agenda-prepare-buffers 1 1.980565276 1.980565276 org-element-parse-buffer 6 1.4980202550 0.2496700425 org-agenda-finalize 1 1.094985093 1.094985093 org-agenda-skip 2545 1.0722660840 0.0004213226 org-end-of-subtree 449 1.0195991870 0.0022708222 org-element--current-element 6040 0.8202829350 0.0001358084 org-get-entries-from-diary 1 0.806067286 0.806067286 org-up-heading-safe 398 0.7662179339 0.0019251706 org-get-tags-at 126 0.7296816199 0.0057911239 org-before-first-heading-p 2036 0.7035860589 0.0003455727 org-agenda-dim-blocked-tasks 1 0.689500952 0.689500952 org-element--parse-objects 4566 0.6892202150 0.0001509461 org-entry-blocked-p 61 0.678698494 0.0111262048 org-agenda-get-blocks 17 0.628517483 0.0369716166 org-outline-level 1353 0.5567370970 0.0004114834 org-add-props 15547 0.5454277439 3.508...e-05 org-element-item-parser 1698 0.5263746370 0.0003099968 org-indent-refresh-maybe 6 0.495835792 0.0826392986 org-indent-add-properties 6 0.4955369260 0.0825894876 org-agenda-get-timestamps 17 0.4623098930 0.0271946995 org-block-todo-from-children-or-siblings-or-parent 61 0.3965410289 0.0065006726 org-refresh-category-properties 17 0.363467201 0.0213804235 org-at-item-p 5646 0.3450254890 6.110...e-05 org-list-in-valid-context-p 1698 0.3091587659 0.0001820723 org-in-block-p 1698 0.3039967379 0.0001790322 org-agenda-mode 1 0.219065373 0.219065373 org-between-regexps-p 6792 0.1952452710 2.874...e-05 org-set-regexps-and-options 23 0.1858347920 0.0080797735 org--setup-collect-keywords 25 0.1807199010 0.0072287960 org-at-heading-p 6015 0.1549813460 2.576...e-05 org-depend-block-todo 45 0.147637119 0.0032808248 org-agenda--timestamp-to-absolute 4282 0.1214312879 2.835...e-05 org-time-string-to-absolute 4282 0.1054320980 2.462...e-05 org-get-limited-outline-regexp 8392 0.0991706369 1.181...e-05 org-in-src-block-p 2481 0.0879872789 3.546...e-05 org-element--object-lex 5148 0.0862918539 1.676...e-05 org-indent-set-line-properties 5832 0.0773937020 1.327...e-05 org-element-at-point 43 0.0534147080 0.0012422025 org-at-date-range-p 167 0.0512554689 0.0003069189 org-element--parse-to 43 0.050396487 0.0011720113 org-find-entry-with-id 4 0.049598946 0.0123997365 org-find-property 4 0.049565889 0.0123914722 org-element-paragraph-parser 2499 0.0472630119 1.891...e-05 org-closest-date 2179 0.0333128859 1.528...e-05 org-in-regexp 6792 0.0328371180 4.834...e-06 org-parse-time-string 4980 0.0325066720 6.527...e-06 org-element--list-struct 204 0.0299346770 0.0001467386 org-agenda-finalize-entries 1 0.028590852 0.028590852 org-element-headline-parser 186 0.0279479120 0.0001502575 org-agenda-format-item 63 0.0225724880 0.0003582934 org-at-property-p 6 0.021528419 0.0035880698 org-agenda-get-sexps 17 0.0213119410 0.0012536435 org-tag-string-to-alist 7 0.019620708 0.0028029582 org-entry-is-done-p 62 0.019182333 0.0003093924 org-list-item-body-column 1698 0.0190441769 1.121...e-05 org-entries-lessp 289 0.0187772820 6.497...e-05 org-entry-properties 65 0.0166800490 0.0002566161 org-in-commented-heading-p 11 0.016132671 0.0014666064 org-element-comment-parser 38 0.0139885649 0.0003681201 org-habit-parse-todo 4 0.013850074 0.0034625185 org-inlinetask-outline-regexp 4191 0.0137324080 3.276...e-06 org-agenda-get-category-icon 63 0.0134784819 0.0002139441 org-element--collect-affiliated-keywords 1858 0.0126514760 6.809...e-06 org-mode 6 0.0117698550 0.0019616425 org-get-priority 59 0.0115445370 0.0001956701 org-agenda-align-tags 1 0.011071635 0.011071635 org-element-link-parser 340 0.0101422319 2.983...e-05 org-entry-is-todo-p 41 0.010028271 0.0002445919 org-element-keyword-parser 275 0.0092091630 3.348...e-05 org-time-string-to-time 694 0.0087923020 1.266...e-05 org-heading-components 15 0.0070980520 0.0004732034 org-get-heading 14 0.006817632 0.0004869737 org-get-indentation 3948 0.0068139819 1.725...e-06 org-item-re 7010 0.0066241309 9.449...e-07 org-agenda-highlight-todo 63 0.0064883529 0.0001029897 org-install-agenda-files-menu 6 0.0058662939 0.0009777156 org-element-section-parser 156 0.0054134160 3.470...e-05 org-agenda-files 9 0.0050733739 0.0005637082 org-get-wdays 2101 0.0049502890 2.356...e-06 org-agenda-new-marker 127 0.0047657869 3.752...e-05 org-activate-links 17 0.004302121 0.0002530659 org-element-drawer-parser 216 0.0039796950 1.842...e-05 org-element-bold-parser 1254 0.0037389459 2.981...e-06 org-element-plain-list-parser 354 0.0034136569 9.643...e-06 org-element-set-contents 7092 0.0033066540 4.662...e-07 org-element-table-cell-parser 1224 0.0031456279 2.569...e-06 org-agenda-skip-eval 4962 0.0031400739 6.328...e-07 org-element-map 6 0.00309839 0.0005163983 org-element-table-row-parser 456 0.0029639309 6.499...e-06 org-element-src-block-parser 42 0.0024836220 5.913...e-05 org-element-table-parser 84 0.0023370089 2.782...e-05 org-check-agenda-file 34 0.0022809730 6.708...e-05 org-habit-insert-consistency-graphs 1 0.002140971 0.002140971 org-make-options-regexp 23 0.0020471070 8.900...e-05 org-date-to-gregorian 306 0.0020049500 6.552...e-06 org-not-nil 3902 0.0019919079 5.104...e-07 org-mark-ring-push 2 0.001923639 0.0009618195 org-element--get-node-properties 186 0.0016896940 9.084...e-06 org-get-category 63 0.0016745019 2.657...e-05 org-remove-uninherited-tags 250 0.0010946129 4.378...e-06 org-agenda-fix-displayed-tags 63 0.0010371940 1.646...e-05 org-get-agenda-file-buffer 34 0.00101761 2.992...e-05 org-today 91 0.000911803 1.001...e-05 org-find-base-buffer-visiting 34 0.0008710779 2.561...e-05 org-get-repeat 4 0.0008627859 0.0002156964 org-split-string 216 0.0008330470 3.856...e-06 org-element-quote-block-parser 30 0.000754545 2.51515e-05 org-habit-build-graph 4 0.000723021 0.0001807552 org-link-expand-abbrev 84 0.0006686299 7.959...e-06 org-get-scheduled-time 4 0.000649615 0.0001624037 org-element-italic-parser 156 0.000549965 3.525...e-06 org-element-subscript-parser 90 0.000514684 5.718...e-06 org-element--get-time-properties 186 0.0004972190 2.673...e-06 org-find-invisible-foreground 6 0.0004684680 7.807...e-05 org-agenda-today-p 35 0.0004448479 1.270...e-05 org-agenda-quit 1 0.000391807 0.000391807 org-agenda--quit 1 0.000379794 0.000379794 org-set-startup-visibility 6 0.0003552530 5.920...e-05 org-unescape-code-in-string 42 0.0003384670 8.058...e-06 org-indent-mode 6 0.000272112 4.5352e-05 org-indent-notify-modified-headline 6 0.00027114 4.519e-05 org-delete-all 256 0.0002682720 1.047...e-06 org-setup-filling 6 0.000266367 4.439...e-05 org-get-time-of-day 24 0.0002553330 1.063...e-05 org-add-prop-inherited 150 0.0002186310 1.457...e-06 org-reduced-level 264 0.0002176899 8.245...e-07 org-agenda-fontify-priorities 1 0.00018978 0.00018978 org-tag-alist-to-groups 23 0.00018918 8.225...e-06 org-downcase-keep-props 119 0.00018673 1.569...e-06 org-element-latex-fragment-parser 48 0.0001767690 3.682...e-06 org-refresh-effort-properties 6 0.0001657769 2.762...e-05 org-get-todo-face 61 0.000163882 2.686...e-06 org-string-nw-p 94 0.0001472979 1.566...e-06 org-refresh-properties 6 0.0001372320 2.287...e-05 org-macro-initialize-templates 6 0.0001306730 2.177...e-05 org-extract-log-state-settings 42 0.0001298379 3.091...e-06 org-element--cache-put 310 0.0001260349 4.065...e-07 org-file-menu-entry 119 0.0001125649 9.459...e-07 org-agenda-add-time-grid-maybe 1 0.000109388 0.000109388 org-replace-escapes 4 0.000105688 2.6422e-05 org-element-timestamp-parser 12 0.0001047390 8.72825e-06 org-agenda-prepare-window 1 9.9871e-05 9.9871e-05 org-current-level 6 9.577...e-05 1.596...e-05 org-cycle-hide-archived-subtrees 6 9.5675e-05 1.594...e-05 org-set-font-lock-defaults 6 9.310...e-05 1.551...e-05 org-indent-initialize-agent 9 8.4457e-05 9.384...e-06 org-link-get-parameter 108 7.829...e-05 7.249...e-07 org-macro--collect-macros 6 7.703...e-05 1.283...e-05 org-element-underline-parser 12 7.525e-05 6.270...e-06 org-element-fixed-width-parser 6 7.4863e-05 1.247...e-05 org-cycle-show-empty-lines 6 7.3664e-05 1.227...e-05 org-diary-default-entry 1 7.0578e-05 7.0578e-05 org-habit-get-faces 112 6.4307e-05 5.741...e-07 org-agenda-cleanup-fancy-diary 1 6.356e-05 6.356e-05 org-element-strike-through-parser 6 6.255...e-05 1.042...e-05 org-agenda-reset-markers 2 6.045e-05 3.0225e-05 org-add-to-diary-list 1 6.0132e-05 6.0132e-05 org-element-property 116 5.776...e-05 4.979...e-07 org-element-footnote-reference-parser 6 5.7708e-05 9.618e-06 org-modify-diary-entry-string 1 5.1566e-05 5.1566e-05 org-habit-get-priority 4 4.9648e-05 1.2412e-05 org-hide-archived-subtrees 6 4.606...e-05 7.678...e-06 org-agenda-format-date-aligned 1 4.2942e-05 4.2942e-05 org-update-radio-target-regexp 6 3.823...e-05 6.372...e-06 org-compile-prefix-format 1 3.7413e-05 3.7413e-05 org-remove-keyword-keys 6 3.4821e-05 5.8035e-06 org-setup-comments-handling 6 2.999...e-05 4.999...e-06 org-cycle-hide-drawers 6 2.991...e-05 4.985...e-06 org-element-statistics-cookie-parser 6 2.7851e-05 4.641...e-06 org-agenda-get-day-face 1 2.6736e-05 2.6736e-05 org-element-type 43 2.670...e-05 6.210...e-07 org-habit-duration-to-days 5 2.6443e-05 5.288...e-06 org-overview 6 2.4111e-05 4.0185e-06 org-set-visibility-according-to-property 6 2.3298e-05 3.883e-06 org-skip-whitespace 6 2.1282e-05 3.547e-06 org-compute-latex-and-related-regexp 6 1.661...e-05 2.768...e-06 org-face-from-face-or-color 63 1.6135e-05 2.561...e-07 org-assign-fast-keys 6 1.3769e-05 2.294...e-06 org-days-to-iso-week 1 1.3219e-05 1.3219e-05 org-element-cache-reset 6 9.770...e-06 1.628...e-06 org-remove-flyspell-overlays-in 16 8.941e-06 5.588125e-07 org-check-running-clock 6 6.843e-06 1.140...e-06 org-load-modules-maybe 6 5.871e-06 9.785e-07 org-agenda-set-mode-name 1 5.861e-06 5.861e-06 org-unhighlight 2 5.846e-06 2.923e-06 org-before-change-function 6 4.290...e-06 7.15e-07 org-property-inherit-p 6 4.238...e-06 7.064...e-07 org-unbracket-string 2 4.196e-06 2.098e-06 org-agenda-update-agenda-type 2 3.555e-06 1.7775e-06 org-time-stamp-format 8 3.013e-06 3.76625e-07 org-table-sticky-header--scroll-function 1 2.138e-06 2.138e-06 org-agenda-ndays-to-span 2 1.525e-06 7.625e-07 org-agenda-fit-window-to-buffer 1 1.452e-06 1.452e-06 org-agenda-mark-clocking-task 1 1.257e-06 1.257e-06 org-set-sorting-strategy 1 1.201e-06 1.201e-06 org-agenda-span-name 1 1.092e-06 1.092e-06 org-font-lock-add-tag-faces 1 1.031e-06 1.031e-06 org-agenda-span-to-ndays 1 1.02e-06 1.02e-06 org-agenda-use-sticky-p 1 1.018e-06 1.018e-06 -- get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode: > get Memacs from https://github.com/novoid/Memacs < Personal Information Management > http://Karl-Voit.at/tags/pim/ Emacs-related > http://Karl-Voit.at/tags/emacs/ ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2017-08-06 10:18 ` Karl Voit @ 2017-08-07 11:41 ` Nicolas Goaziou 0 siblings, 0 replies; 22+ messages in thread From: Nicolas Goaziou @ 2017-08-07 11:41 UTC (permalink / raw) To: Karl Voit; +Cc: Karl Voit, emacs-orgmode Hello, Karl Voit <devnull@Karl-Voit.at> writes: > Results at the end of this posting. Thank you. I assume you have around 17 agenda files, use a single day view and have much more SCHEDULED than DEADLINE? Is it right? > I may take some time to come up with a minimum config and my agenda > files. I suggest to use M-: (org-agenda nil "a") as a first step. > However, in case this is much faster compared to my current > situation, this does not help me with my issues and just shows that > Org itself does not have urgent performance issues, right? No worries. It will still be excruciatingly slow. Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 22+ messages in thread
* Slow speed of week and month views @ 2010-02-16 19:58 Matt Lundin 2010-02-21 7:37 ` Carsten Dominik 0 siblings, 1 reply; 22+ messages in thread From: Matt Lundin @ 2010-02-16 19:58 UTC (permalink / raw) To: Org Mode Currently I use org-mode to keep track of todos, projects, deadlines and the emacs diary to keep track of appointments. I would prefer to keep the latter in org-mode, but the slow speed of the weekly and monthly agenda views makes it difficult to gain a quick calendar overview of all upcoming timestamped items. Has anyone had success in setting up a *fast* calendar view for org-mode? I use the following custom command to get a view of timestamped items only: --8<---------------cut here---------------start------------->8--- ("cc" "Calendar (events)" agenda "" ((org-agenda-ndays 1) (org-agenda-time-grid nil) (org-agenda-prefix-format " %-12:t ") (org-agenda-include-all-todo nil) (org-agenda-repeating-timestamp-show-all t) (org-agenda-skip-function '(org-agenda-skip-entry-if 'deadline 'scheduled)))) --8<---------------cut here---------------end--------------->8--- With 25 agenda files, if I type "v m" (view month) in the agenda results for this custom command, it takes over 16 seconds to generate the monthly calendar.[1] I get similar results if I type "v m" in the default agenda view.[2] As a point of comparison, I've included the time it takes to generate an agenda view for a single day on my system.[3] As far as I can tell, org-mode scans each agenda file anew for each day shown in the weekly or monthly agenda (hence the many invocations of org-agenda-get-day-entries in the results below), so the time it takes to generate the agenda is roughly proportional to the number of days in the view. Does anyone have any tips for speeding up the weekly or monthly agenda views? I have vague and utterly naïve notions of a function that would scan each agenda file *once* for timestamps within a given range rather than searching the agenda files again for each new day---but such a function is far beyond my elisp skills. Any help would be greatly appreciated. Thanks! Matt Footnotes: [1] Monthly view of custom command with 25 agenda files: org-agenda-view-mode-dispatch 1 15.528815 15.528815 org-agenda-month-view 1 15.384877 15.384877 org-agenda-change-time-span 1 15.384839 15.384839 org-agenda-redo 1 15.383679 15.383679 org-agenda-list 1 15.382742 15.382742 org-agenda-get-day-entries 700 13.948870999 0.0199269585 org-agenda-get-scheduled 700 6.4163719999 0.0091662457 org-agenda-skip-entry-if 12871 5.3256909999 0.0004137744 org-agenda-skip-if 12871 5.1750260000 0.0004020686 org-agenda-get-deadlines 700 4.2478989999 0.0060684271 org-agenda-get-timestamps 700 1.7289499999 0.0024699285 org-agenda-get-sexps 700 0.6763130000 0.0009661614 org-agenda-get-blocks 700 0.6087859999 0.0008696942 org-agenda-todayp 1400 0.3336939999 0.0002383528 org-agenda-skip 15534 0.0450969999 2.903...e-06 org-agenda-files 3 0.016815 0.005605 org-agenda-cleanup-fancy-diary 28 0.0062590000 0.0002235357 org-agenda-mode 1 0.00606 0.00606 org-agenda-highlight-todo 86 0.0041800000 4.860...e-05 org-agenda-format-date-aligned 28 0.0033799999 0.0001207142 org-agenda-new-marker 136 0.0012809999 9.419...e-06 org-agenda-mark-clocking-task 1 0.00121 0.00121 org-agenda-align-tags 1 0.000903 0.000903 org-agenda-find-same-or-today-or-agenda 1 0.000499 0.000499 org-agenda-fontify-priorities 1 0.000394 0.000394 org-agenda-fix-displayed-tags 86 0.0003439999 3.999...e-06 org-agenda-add-time-grid-maybe 23 0.000236 1.026...e-05 org-agenda-set-mode-name 2 6.2e-05 3.1e-05 org-agenda-compute-time-span 1 3.8e-05 3.8e-05 org-agenda-mark-header-line 1 3.5e-05 3.5e-05 org-agenda-post-command-hook 2 1.6e-05 8e-06 org-agenda-reset-markers 1 1e-05 1e-05 org-agenda-ndays-to-span 2 6e-06 3e-06 org-agenda-check-type 1 5e-06 5e-06 [2] Elp results for monthly agenda view: org-agenda-view-mode-dispatch 1 14.143243 14.143243 org-agenda-month-view 1 13.974747 13.974747 org-agenda-change-time-span 1 13.974703 13.974703 org-agenda-redo 1 13.972615 13.972615 org-agenda-list 1 13.97065 13.97065 org-agenda-get-day-entries 700 12.608783999 0.0180125485 org-agenda-get-scheduled 700 5.9895430000 0.0085564900 org-agenda-get-deadlines 700 3.8111570000 0.0054445100 org-agenda-get-timestamps 700 1.2642759999 0.0018061085 org-agenda-get-sexps 700 0.6626510000 0.0009466442 org-agenda-skip 15534 0.6255180000 4.026...e-05 org-agenda-get-blocks 700 0.6051640000 0.0008645200 org-agenda-todayp 1400 0.326468 0.0002331914 org-agenda-align-tags 1 0.023695 0.023695 org-agenda-highlight-todo 178 0.0217819999 0.0001223707 org-agenda-files 3 0.0175449999 0.0058483333 org-agenda-cleanup-fancy-diary 28 0.006159 0.0002199642 org-agenda-mode 1 0.006109 0.006109 org-agenda-mark-clocking-task 1 0.005423 0.005423 org-agenda-format-date-aligned 28 0.003358 0.0001199285 org-agenda-new-marker 314 0.0026219999 8.350...e-06 org-agenda-add-time-grid-maybe 27 0.0011129999 4.122...e-05 org-agenda-fontify-priorities 1 0.000879 0.000879 org-agenda-fix-displayed-tags 178 0.0008699999 4.887...e-06 org-agenda-find-same-or-today-or-agenda 1 0.000471 0.000471 org-agenda-deadline-face 27 0.0002540000 9.407...e-06 org-agenda-reset-markers 1 8.5e-05 8.5e-05 org-agenda-set-mode-name 2 5.7e-05 2.85e-05 org-agenda-mark-header-line 1 3.6e-05 3.6e-05 org-agenda-compute-time-span 1 3.3e-05 3.3e-05 org-agenda-post-command-hook 2 2.2e-05 1.1e-05 org-agenda-ndays-to-span 2 7e-06 3.5e-06 org-agenda-check-type 1 5e-06 5e-06 [3] Agenda view for single day: org-agenda-list 1 1.765911 1.765911 org-agenda-get-day-entries 25 1.075021 0.04300084 org-agenda-get-scheduled 25 0.8153739999 0.0326149599 org-agenda-get-deadlines 25 0.1540369999 0.0061614799 org-agenda-get-timestamps 25 0.0491 0.001964 org-agenda-get-sexps 25 0.023261 0.00093044 org-agenda-skip 555 0.0225499999 4.063...e-05 org-agenda-get-blocks 25 0.021848 0.0008739199 org-agenda-files 3 0.0159939999 0.0053313333 org-agenda-align-tags 1 0.013129 0.013129 org-agenda-highlight-todo 59 0.0100849999 0.0001709322 org-agenda-mode 1 0.007312 0.007312 org-agenda-todayp 50 0.0030340000 6.068e-05 org-agenda-mark-clocking-task 1 0.002379 0.002379 org-agenda-new-marker 112 0.0008930000 7.973...e-06 org-agenda-add-time-grid-maybe 1 0.000831 0.000831 org-agenda-fontify-priorities 1 0.000378 0.000378 org-agenda-fix-displayed-tags 59 0.0002479999 4.203...e-06 org-agenda-cleanup-fancy-diary 1 0.00022 0.00022 org-agenda-deadline-face 18 0.000182 1.011...e-05 org-agenda-format-date-aligned 1 0.000117 0.000117 org-agenda-reset-markers 1 8.5e-05 8.5e-05 org-agenda-mark-header-line 1 3.7e-05 3.7e-05 org-agenda-set-mode-name 1 2.7e-05 2.7e-05 org-agenda-post-command-hook 1 1.8e-05 1.8e-05 org-agenda-ndays-to-span 2 7e-06 3.5e-06 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2010-02-16 19:58 Matt Lundin @ 2010-02-21 7:37 ` Carsten Dominik 2010-02-21 12:34 ` Matthew Lundin 0 siblings, 1 reply; 22+ messages in thread From: Carsten Dominik @ 2010-02-21 7:37 UTC (permalink / raw) To: Matt Lundin; +Cc: Org Mode Hi Matt, I am afraid I don't see any major speed improvements that could make this happen. Yes, one could parse all the files once, build a table in memory and get the entries for each day from there - but that comes down to a complete rewrite of the parser, maybe even to switching to an internal representation model for Org-mode. I don't see that happening, I am afraid. - Carsten On Feb 16, 2010, at 8:58 PM, Matt Lundin wrote: > Currently I use org-mode to keep track of todos, projects, deadlines > and > the emacs diary to keep track of appointments. I would prefer to keep > the latter in org-mode, but the slow speed of the weekly and monthly > agenda views makes it difficult to gain a quick calendar overview of > all > upcoming timestamped items. > > Has anyone had success in setting up a *fast* calendar view for > org-mode? I use the following custom command to get a view of > timestamped items only: > > --8<---------------cut here---------------start------------->8--- > ("cc" "Calendar (events)" agenda "" > ((org-agenda-ndays 1) > (org-agenda-time-grid nil) > (org-agenda-prefix-format " %-12:t ") > (org-agenda-include-all-todo nil) > (org-agenda-repeating-timestamp-show-all t) > (org-agenda-skip-function '(org-agenda-skip-entry-if 'deadline > 'scheduled)))) > --8<---------------cut here---------------end--------------->8--- > > With 25 agenda files, if I type "v m" (view month) in the agenda > results > for this custom command, it takes over 16 seconds to generate the > monthly calendar.[1] > > I get similar results if I type "v m" in the default agenda view.[2] > As > a point of comparison, I've included the time it takes to generate an > agenda view for a single day on my system.[3] > > As far as I can tell, org-mode scans each agenda file anew for each > day > shown in the weekly or monthly agenda (hence the many invocations of > org-agenda-get-day-entries in the results below), so the time it takes > to generate the agenda is roughly proportional to the number of days > in > the view. > > Does anyone have any tips for speeding up the weekly or monthly agenda > views? I have vague and utterly naïve notions of a function that would > scan each agenda file *once* for timestamps within a given range > rather > than searching the agenda files again for each new day---but such a > function is far beyond my elisp skills. Any help would be greatly > appreciated. > > Thanks! > Matt > > Footnotes: > > [1] Monthly view of custom command with 25 agenda files: > > org-agenda-view-mode-dispatch > 1 15.528815 15.528815 > org-agenda-month-view > 1 15.384877 15.384877 > org-agenda-change-time-span > 1 15.384839 15.384839 > org-agenda-redo > 1 15.383679 15.383679 > org-agenda-list > 1 15.382742 15.382742 > org-agenda-get-day-entries > 700 13.948870999 0.0199269585 > org-agenda-get-scheduled > 700 6.4163719999 0.0091662457 > org-agenda-skip-entry-if > 12871 5.3256909999 0.0004137744 > org-agenda-skip-if > 12871 5.1750260000 0.0004020686 > org-agenda-get-deadlines > 700 4.2478989999 0.0060684271 > org-agenda-get-timestamps > 700 1.7289499999 0.0024699285 > org-agenda-get-sexps > 700 0.6763130000 0.0009661614 > org-agenda-get-blocks > 700 0.6087859999 0.0008696942 > org-agenda-todayp > 1400 0.3336939999 0.0002383528 > org-agenda-skip > 15534 0.0450969999 2.903...e-06 > org-agenda-files > 3 0.016815 0.005605 > org-agenda-cleanup-fancy-diary > 28 0.0062590000 0.0002235357 > org-agenda-mode > 1 0.00606 0.00606 > org-agenda-highlight-todo > 86 0.0041800000 4.860...e-05 > org-agenda-format-date-aligned > 28 0.0033799999 0.0001207142 > org-agenda-new-marker > 136 0.0012809999 9.419...e-06 > org-agenda-mark-clocking-task > 1 0.00121 0.00121 > org-agenda-align-tags > 1 0.000903 0.000903 > org-agenda-find-same-or-today-or-agenda > 1 0.000499 0.000499 > org-agenda-fontify-priorities > 1 0.000394 0.000394 > org-agenda-fix-displayed-tags > 86 0.0003439999 3.999...e-06 > org-agenda-add-time-grid-maybe > 23 0.000236 1.026...e-05 > org-agenda-set-mode-name > 2 6.2e-05 3.1e-05 > org-agenda-compute-time-span > 1 3.8e-05 3.8e-05 > org-agenda-mark-header-line > 1 3.5e-05 3.5e-05 > org-agenda-post-command-hook > 2 1.6e-05 8e-06 > org-agenda-reset-markers > 1 1e-05 1e-05 > org-agenda-ndays-to-span > 2 6e-06 3e-06 > org-agenda-check-type > 1 5e-06 5e-06 > > [2] Elp results for monthly agenda view: > > org-agenda-view-mode-dispatch > 1 14.143243 14.143243 > org-agenda-month-view > 1 13.974747 13.974747 > org-agenda-change-time-span > 1 13.974703 13.974703 > org-agenda-redo > 1 13.972615 13.972615 > org-agenda-list > 1 13.97065 13.97065 > org-agenda-get-day-entries > 700 12.608783999 0.0180125485 > org-agenda-get-scheduled > 700 5.9895430000 0.0085564900 > org-agenda-get-deadlines > 700 3.8111570000 0.0054445100 > org-agenda-get-timestamps > 700 1.2642759999 0.0018061085 > org-agenda-get-sexps > 700 0.6626510000 0.0009466442 > org-agenda-skip > 15534 0.6255180000 4.026...e-05 > org-agenda-get-blocks > 700 0.6051640000 0.0008645200 > org-agenda-todayp > 1400 0.326468 0.0002331914 > org-agenda-align-tags > 1 0.023695 0.023695 > org-agenda-highlight-todo > 178 0.0217819999 0.0001223707 > org-agenda-files > 3 0.0175449999 0.0058483333 > org-agenda-cleanup-fancy-diary > 28 0.006159 0.0002199642 > org-agenda-mode > 1 0.006109 0.006109 > org-agenda-mark-clocking-task > 1 0.005423 0.005423 > org-agenda-format-date-aligned > 28 0.003358 0.0001199285 > org-agenda-new-marker > 314 0.0026219999 8.350...e-06 > org-agenda-add-time-grid-maybe > 27 0.0011129999 4.122...e-05 > org-agenda-fontify-priorities > 1 0.000879 0.000879 > org-agenda-fix-displayed-tags > 178 0.0008699999 4.887...e-06 > org-agenda-find-same-or-today-or-agenda > 1 0.000471 0.000471 > org-agenda-deadline-face > 27 0.0002540000 9.407...e-06 > org-agenda-reset-markers > 1 8.5e-05 8.5e-05 > org-agenda-set-mode-name > 2 5.7e-05 2.85e-05 > org-agenda-mark-header-line > 1 3.6e-05 3.6e-05 > org-agenda-compute-time-span > 1 3.3e-05 3.3e-05 > org-agenda-post-command-hook > 2 2.2e-05 1.1e-05 > org-agenda-ndays-to-span > 2 7e-06 3.5e-06 > org-agenda-check-type > 1 5e-06 5e-06 > > [3] Agenda view for single day: > > org-agenda-list > 1 1.765911 1.765911 > org-agenda-get-day-entries > 25 1.075021 0.04300084 > org-agenda-get-scheduled > 25 0.8153739999 0.0326149599 > org-agenda-get-deadlines > 25 0.1540369999 0.0061614799 > org-agenda-get-timestamps > 25 0.0491 0.001964 > org-agenda-get-sexps > 25 0.023261 0.00093044 > org-agenda-skip > 555 0.0225499999 4.063...e-05 > org-agenda-get-blocks > 25 0.021848 0.0008739199 > org-agenda-files > 3 0.0159939999 0.0053313333 > org-agenda-align-tags > 1 0.013129 0.013129 > org-agenda-highlight-todo > 59 0.0100849999 0.0001709322 > org-agenda-mode > 1 0.007312 0.007312 > org-agenda-todayp > 50 0.0030340000 6.068e-05 > org-agenda-mark-clocking-task > 1 0.002379 0.002379 > org-agenda-new-marker > 112 0.0008930000 7.973...e-06 > org-agenda-add-time-grid-maybe > 1 0.000831 0.000831 > org-agenda-fontify-priorities > 1 0.000378 0.000378 > org-agenda-fix-displayed-tags > 59 0.0002479999 4.203...e-06 > org-agenda-cleanup-fancy-diary > 1 0.00022 0.00022 > org-agenda-deadline-face > 18 0.000182 1.011...e-05 > org-agenda-format-date-aligned > 1 0.000117 0.000117 > org-agenda-reset-markers > 1 8.5e-05 8.5e-05 > org-agenda-mark-header-line > 1 3.7e-05 3.7e-05 > org-agenda-set-mode-name > 1 2.7e-05 2.7e-05 > org-agenda-post-command-hook > 1 1.8e-05 1.8e-05 > org-agenda-ndays-to-span > 2 7e-06 3.5e-06 > > > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: Slow speed of week and month views 2010-02-21 7:37 ` Carsten Dominik @ 2010-02-21 12:34 ` Matthew Lundin 0 siblings, 0 replies; 22+ messages in thread From: Matthew Lundin @ 2010-02-21 12:34 UTC (permalink / raw) To: Carsten Dominik; +Cc: Matt Lundin, Org Mode Hi Carsten, Carsten Dominik <carsten.dominik@gmail.com> writes: > I am afraid I don't see any major speed improvements that could make > this happen. > > Yes, one could parse all the files once, build a table in memory and >get the entries for each day from there - but that comes down to a >complete rewrite of the parser, maybe even to switching to an internal >representation model for Org-mode. > > I don't see that happening, I am afraid. Thanks so much for taking the time to look at this. The combination of diary and org-mode works fine for now, so I believe I will stick with that. If I use org-mode for appointments, I imagine I could reserve a single diary.org file for appointments and limit weekly and monthly calendar custom commands to that file. Best, Matt ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2017-08-07 11:42 UTC | newest] Thread overview: 22+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-04 15:14 [Orgmode] Slow speed of week and month views Christoph Groth 2017-08-05 3:07 ` Adam Porter 2017-08-05 21:09 ` Karl Voit 2017-08-05 22:17 ` John Kitchin 2017-08-05 22:33 ` Nicolas Goaziou 2017-08-06 2:28 ` [Orgmode] " Tim Cross 2017-08-06 2:36 ` Adam Porter 2017-08-06 7:54 ` Karl Voit 2017-08-06 13:47 ` John Kitchin 2017-08-05 22:35 ` Nicolas Goaziou 2017-08-06 8:00 ` Karl Voit 2017-08-06 8:15 ` Nicolas Goaziou 2017-08-06 9:01 ` Karl Voit 2017-08-06 9:13 ` Adam Porter 2017-08-06 10:03 ` Karl Voit 2017-08-06 10:28 ` Adam Porter 2017-08-06 9:26 ` Nicolas Goaziou 2017-08-06 10:18 ` Karl Voit 2017-08-07 11:41 ` Nicolas Goaziou -- strict thread matches above, loose matches on Subject: below -- 2010-02-16 19:58 Matt Lundin 2010-02-21 7:37 ` Carsten Dominik 2010-02-21 12:34 ` Matthew Lundin
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.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).