[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] ANN: org-ql agenda block support
From: |
Mikhail Skorzhinskii |
Subject: |
Re: [O] ANN: org-ql agenda block support |
Date: |
Thu, 12 Sep 2019 21:19:01 +0200 |
User-agent: |
mu4e 1.3.4; emacs 26.2 |
Great overview, thanks a lot.
So I give it a try and completely fell in love. On my data set it is
visibly faster then org-agenda. I also wrote a lot of code around
org-agenda over the years to support my sometimes awkward needs. And now
I just threw all this ugly code away!
That was very emotional moment for me, very good job, kind sir.
Adam Porter <address@hidden> writes:
> Mikhail Skorzhinskii <address@hidden> writes:
>
> > Adam Porter <address@hidden> writes:
> > > However, the org-ql-block version runs in about 1/5th the time (0.7
> > > seconds compared to 3.45 seconds on my collection of org-agenda-files).
> >
> > For some reason I thought that on average org-ql package is working
> > slower then native org-agenda searches. Probably because there are more
> > control and interface is much more simpler and cleaner and nothing
> > comes free of charge. That sort of thing. :-)
>
> Well, it might also be because it used to be generally slower, and I
> tried to be clear about that whenever I mentioned it. :) But I've
> applied a lot of optimizations to it over the past few months, so it's
> generally pretty fast now, sometimes much faster. It's hard to make a
> direct comparison in some cases, depending on the complexity of the
> query. I plan to continue optimizing it as I'm able, so hopefully it
> will continue improving.
>
> > I am really glad that I was mistaken. Care to drop a few thoughts on why
> > this is the case? This is applicable only for ql-block or other org-ql
> > functions are a bit faster too?
>
> Well, it's a completely different implementation. It has two main
> features which attempt to make it fast: it uses regexp searches across
> buffers as much as possible, similar to org-agenda.el but in a more
> flexible way (though there's still room for improvement here, especially
> with complex queries); and it caches results keyed on the query, buffer,
> and narrowing (cached results are discarded when a buffer is modified),
> which avoids re-running the same queries for unmodified buffers. Oh,
> and it also byte-compiles query predicates and action functions to eke
> out a bit more speed.
>
> And in general, I run benchmarks and try to improve performance when
> possible; you can see some of the benchmark results in the notes.org
> file in the repo (not all of which are up-to-date with current org-ql
> code).
>
> org-ql-block is just a way to make use of the results returned by org-ql
> queries; other ways include org-ql-agenda, org-ql-search, and of course
> you can use the raw results however you like, including calling whatever
> :action function you like at matching entries, to return whatever kind
> of data you need, or even perform actions directly on entries.
>
> In other words, the querying code is separate from the display-related
> code, so all org-ql-block, org-ql-agenda, org-ql-search, etc. do is
> format results from org-ql queries and display them.
>
> Upcoming features include an org-ql-sparse-tree command, like
> org-sparse-tree but using org-ql queries; recursive queries; and
> probably a timeline view like I recently posted about.
>
> Please let me know if you have any feedback!