-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add caching of bib candidates #69
Comments
@wenjie2wang can you please see here? It should be working here. |
Thanks for your quick response! FYI, my bib file is available at https://gitlab.com/wenjie2wang/bibrary/-/raw/master/bib/index.bib. |
OK, thanks. I think I actually know what's going on. Will check in a bit. |
I just loaded your file, and every time I load a command, there's a pause, but it's certainly less than a second. What do you mean by "noticeable time"? |
That said, I do think we've identified a performance bottleneck, that when fixed should address this. |
Thanks, @bdarcus ! This is what I mean by "noticeable time". There is always a noticeable pause after |
OK, thanks much! That's what I see. Not terrible, but I'd like performance to be consistently very good to excellent. If you see the linked PR, I've figured out what causes this, but not yet why, or what can be done about it. |
I've been digging into this (doing benchmarking and profiling), and I can't see an obvious way to improve this on my end without unnecessary complexity. But I do see that a simple change in bibtex-completion could address this. The situationWe have two functions that generate this UI:
Because of how completing-read is designed, I need 2, though, because it doesn't have any notion of display transformers as in helm and ivy. So there is no distinction in completing-read between searching/filtering and display. So part of the problem is intrinsic to completing-read. The other part is that Proposed solutionIdeally, however, I'd be able to replace the candidate strings in @tmalsburg - would it be possible to add a hook to bibtex-completion (a la the sort of thing you see in org-mode) that would allow me to specify a different function to generate that string? Something like: (add-hook 'bibtex-completion-candidates-hook #'bibtex-actions--format-candidate) If yes, that would be a simple and elegant solution to this issue. Edit: per below, however, I decided to add my own cache. ConclusionIn the end, I don't think the slight delay is a deal breaker, but would ideally like to address it, without myself having to write my own caching code. PS - I have tried different ways to speed up |
I've opened a linked pr that adds a cache. A hook could still be useful, but if this works, it's a small enough addition that I'm happy to merge it. |
Refactor so that 'bibtex-actions-read' pulls candidates from a cache: 'bibtex-actions--candidates-cache'. Add: - 'bibtex-actions--candidates-cache' variable - 'bibtex-actions-refresh' interactive command, to update cache - README section on 'proactive reloading' Refactor: - 'bibtex-actions--get-candidates' renamed to `bibtex-actions--format-candidates` - 'bibtex-actions--get-candidates' now grabs the candidates from the cache fixes #69
Thanks for this nice package! I gave it a try and it worked smoothly for me.
I have a relatively large BibTeX file with over 1,000 entries (and 10,000 lines) and I have been using
ivy-bibtex
. Thebibtex-ctions
takes a noticeable time to read/load the BibTeX file every time, whileivy-bibtex
takes a noticeable time only the first time (assuming that the BibTeX file has not been changed). I guess it is becauseivy-bibtex
somehow caches the BibTeX file that has been read the first time. Thus, IMHO, it would be great ifbibtex-actions
contains a similar caching mechanism.Originally posted by @wenjie2wang in #68
The text was updated successfully, but these errors were encountered: