Skip to content

biber increases compile time and creates latency for big documents #3124

@pchest

Description

@pchest

Description

I am a neovim user that regularly uses vimtex to edit and compile latex documents. Recently I've been working on a document that is 79 pages with figures and references. I found that when I change the backend for autocite to biber from bibtex that I encountered the following issue: After I initially compile the document, edits create extreme latency that renders the cursor unmovable. The full time it takes from the edit and render to being able to move the cursor again is 30 seconds on average. When I switched the backend from biber to bibtex, the render time decreased to 9 seconds on average and the latency issue disappeared entirely.

I have encountered this issue on multiple devices running pop os 22.04. The neovim environment I am using is 10.4 with pchest/nvim-config as the configuration setup.

Steps to reproduce

No response

Expected behavior

No response

Actual behavior

No response

Do you use a latexmkrc file?

No

VimtexInfo

I am using neovim, so I don't have a VimtexInfo page. Here is the result of :checkhealth:
==============================================================================
coc: health#coc#check

- OK nvim version satisfied
- OK Environment check passed
- OK Javascript bundle build/index.js found
- OK Service started

==============================================================================
codecompanion: require("codecompanion.health").check()

- Neovim version: 0.10.4
- Log file: /home/patrick/.local/state/nvim/codecompanion.log

Dependencies: ~
- OK plenary.nvim installed
- OK nvim-treesitter installed

Tree-sitter parsers: ~
- OK markdown parser installed
- OK yaml parser installed

Libraries: ~
- OK curl installed

==============================================================================
diffview: require("diffview.health").check()

Checking plugin dependencies ~
- OK nvim-web-devicons installed.

Checking VCS tools ~
- The plugin requires at least one of the supported VCS tools to be valid.
- OK Git found.
- OK Git is up-to-date. (2.34.1)
- WARNING Configured `hg_cmd` is not executable: 'hg'

==============================================================================
dressing: require("dressing.health").check()

dressing.nvim ~
- OK vim.ui.input active
- OK vim.ui.select active: telescope

==============================================================================
fzf_lua: health#fzf_lua#check

fzf-lua [required] ~
- OK 'fzf' `0.29 (devel)`
- OK 'git' `git version 2.34.1`
- OK 'rg' `ripgrep 13.0.0`
- OK 'fdfind' `fd 8.3.1`
- WARNING 'fzf' `>= 0.53` is recommended.

fzf-lua [optional] ~
- OK `nvim-web-devicons` found
- OK 'rg' `ripgrep 13.0.0`
- OK 'fdfind' `fd 8.3.1`

fzf-lua [optional:media] ~
- WARNING 'viu' not found
- WARNING 'chafa' not found
- WARNING 'ueberzugpp' not found

fzf-lua [env] ~
- OK `FZF_DEFAULT_OPTS` is not set
- OK `FZF_DEFAULT_OPTS_FILE` is not set

==============================================================================
hop: require("hop.health").check()

Ensuring keys are unique ~
- OK Keys are unique

Checking for deprecated features ~
- OK All good

==============================================================================
lazy: require("lazy.health").check()

lazy.nvim ~
- {lazy.nvim} version `11.16.2`
- OK {git} `version 2.34.1`
- WARNING found existing packages at `/home/patrick/.local/share/nvim/site/pack/packer`
- OK packer_compiled.lua not found

luarocks ~
- OK luarocks disabled

==============================================================================
lspconfig: require("lspconfig.health").check()

LSP configs active in this session (globally) ~
- Configured servers: pylsp, bashls, vimls, ltex
- OK Deprecated servers: (none)

LSP configs active in this buffer (bufnr: 1) ~
- Language client log: ~/.local/state/nvim/lsp.log
- Detected filetype: `dashboard`
- 0 client(s) attached to this buffer

Docs for active configs: ~

==============================================================================
molten: require("molten.health").check()

molten-nvim ~
- OK NeoVim >=0.9
- OK Python >=3.10
- OK Python module pynvim found
- OK Python module jupyter-client found
- OK Python module cairosvg found
- OK Python module pnglatex found
- OK Python module plotly found
- OK Python module kaleido found
- OK Python module pyperclip found
- OK Python module nbformat found
- OK Python module pillow found

==============================================================================
nvim: require("nvim.health").check()

Configuration ~
- OK no issues found

Runtime ~
- OK $VIMRUNTIME: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/share/nvim/runtime

Performance ~
- OK Build type: Release

Remote Plugins ~
- OK Up to date

terminal ~
- key_backspace (kbs) terminfo entry: `key_backspace=^H`
- key_dc (kdch1) terminfo entry: `key_dc=\E[3~`
- $COLORTERM="truecolor"

External Tools ~
- OK ripgrep 13.0.0 (/usr/bin/rg)

==============================================================================
nvim-treesitter: require("nvim-treesitter.health").check()

Installation ~
- OK `tree-sitter` found 0.24.7 (parser generator, only needed for :TSInstallFromGrammar)
- OK `node` found v19.3.0 (only needed for :TSInstallFromGrammar)
- OK `git` executable found.
- OK `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
  Version: cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
- OK Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

OS Info:
{
  machine = "x86_64",
  release = "6.12.10-76061203-generic",
  sysname = "Linux",
  version = "#202412060638~1740154617~22.04~b4b3ebc SMP PREEMPT_DYNAMIC Fri F"
} ~

Parser/Features         H L F I J
  - c                   ✓ ✓ ✓ ✓ ✓
  - lua                 ✓ ✓ ✓ ✓ ✓
  - luadoc              ✓ . . . .
  - markdown            ✓ . ✓ ✓ ✓
  - markdown_inline     ✓ . . . ✓
  - python              ✓ ✓ ✓ ✓ ✓
  - query               x ✓ ✓ ✓ ✓
  - r                   ✓ ✓ . ✓ ✓
  - rnoweb              ✓ . ✓ . ✓
  - vim                 ✓ ✓ ✓ . ✓
  - vimdoc              ✓ . . . ✓
  - yaml                ✓ ✓ ✓ ✓ ✓

  Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
         +) multiple parsers found, only one will be used
         x) errors found in the query, try to run :TSUpdate {lang} ~

The following errors have been detected: ~
- ERROR query(highlights): ...m/0.10.4/share/nvim/runtime/lua/vim/treesitter/query.lua:252: Query error at 14:2. Invalid node type "missing_node":
  (missing_node
   ^
  
  query(highlights) is concatenated from the following files:
  | [ERROR]:"/home/patrick/.local/share/nvim/lazy/nvim-treesitter/queries/query/highlights.scm", failed to load: ...m/0.10.4/share/nvim/runtime/lua/vim/treesitter/query.lua:252: Query error at 14:2. Invalid node type "missing_node":
  (missing_node
   ^
  

==============================================================================
provider.clipboard: require("provider.clipboard.health").check()

Clipboard (optional) ~
- OK Clipboard tool found: xclip

==============================================================================
provider.node: require("provider.node.health").check()

Node.js provider (optional) ~
- Disabled (loaded_node_provider=0).

==============================================================================
provider.perl: require("provider.perl.health").check()

Perl provider (optional) ~
- Disabled (loaded_perl_provider=0).

==============================================================================
provider.python: require("provider.python.health").check()

Python 3 provider (optional) ~
- Using: g:python3_host_prog = "/home/patrick/anaconda3/bin/python3"
- Executable: /home/patrick/anaconda3/bin/python3
- Python version: 3.12.2
- pynvim version: 0.5.0
- OK Latest pynvim is installed.

Python virtualenv ~
- OK no $VIRTUAL_ENV

==============================================================================
provider.ruby: require("provider.ruby.health").check()

Ruby provider (optional) ~
- Disabled (loaded_ruby_provider=0).

==============================================================================
r: require("r.health").check()

Checking applications and plugins: ~
- OK Neovim version: 0.10.4
- OK C compiler (`gcc` or `clang`) found.
- OK `R-nvim/cmp-r` found.
- OK `nvim-treesitter/nvim-treesitter` found.

Checking tree-sitter parsers: ~
- OK `r`  found.
- OK `markdown`  found.
- OK `markdown_inline`  found.
- OK `rnoweb`  found.
- ERROR `latex` not found.
- OK `yaml`  found.

==============================================================================
render-markdown: require("render-markdown.health").check()

render-markdown.nvim [version] ~
- OK plugin 8.0.3
- OK neovim >= 0.10

render-markdown.nvim [configuration] ~
- OK valid

render-markdown.nvim [treesitter] ~
- OK markdown: parser installed
- OK markdown_inline: parser installed
- WARNING latex: parser not installed
  - ADVICE:
    - Disable LaTeX support to avoid this warning by setting { latex = { enabled = false } }
- OK markdown: highlight enabled

render-markdown.nvim [icons] ~
- OK using: nvim-web-devicons

render-markdown.nvim [executables] ~
- WARNING latex2text: not installed
  - ADVICE:
    - Disable LaTeX support to avoid this warning by setting { latex = { enabled = false } }

render-markdown.nvim [conflicts] ~
- OK headlines: not installed
- OK obsidian: not installed

==============================================================================
targets: health#targets#check

- WARNING Conflicting mapping found:
  iB → :<C-U>call text_obj#Buffer()<CR>
  B → {'pair': [{'c': '}', 'o': '{'}]}
- WARNING Conflicting mapping found:
  ab → <Plug>(textobj-sandwich-auto-a)
  b → {'pair': [{'c': ')', 'o': '('}, {'c': ']', 'o': '['}, {'c': '}', 'o': '{'}]}
- WARNING Conflicting mapping found:
  ib → <Plug>(textobj-sandwich-auto-i)
  b → {'pair': [{'c': ')', 'o': '('}, {'c': ']', 'o': '['}, {'c': '}', 'o': '{'}]}

==============================================================================
telescope: require("telescope.health").check()

Checking for required plugins ~
- OK plenary installed.
- OK nvim-treesitter installed.

Checking external dependencies ~
- OK rg: found ripgrep 13.0.0
- OK fd: found fd 8.3.1

===== Installed extensions ===== ~

Telescope Extension: `notify` ~
- No healthcheck provided

==============================================================================
vim.lsp: require("vim.lsp.health").check()

- LSP log level : WARN
- Log path: /home/patrick/.local/state/nvim/lsp.log
- WARNING Log size: 265427 KB

vim.lsp: Active Clients ~
- No active clients

vim.lsp: File Watcher ~
- file watching "(workspace/didChangeWatchedFiles)" disabled on all clients

vim.lsp: Position Encodings ~
- No active clients

==============================================================================
vim.treesitter: require("vim.treesitter.health").check()

- Nvim runtime ABI version: 14
- OK Parser: lua                  ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/lua.so
- OK Parser: luadoc               ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/luadoc.so
- OK Parser: markdown             ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/markdown.so
- OK Parser: markdown_inline      ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/markdown_inline.so
- OK Parser: python               ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/python.so
- OK Parser: r                    ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/r.so
- OK Parser: rnoweb               ABI: 13, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/rnoweb.so
- OK Parser: vim                  ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/vim.so
- OK Parser: vimdoc               ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/vimdoc.so
- OK Parser: yaml                 ABI: 14, path: /home/patrick/.local/share/nvim/lazy/nvim-treesitter/parser/yaml.so
- OK Parser: c                    ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/c.so
- OK Parser: lua                  ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/lua.so
- OK Parser: markdown             ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/markdown.so
- OK Parser: markdown_inline      ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/markdown_inline.so
- OK Parser: query                ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/query.so
- OK Parser: vim                  ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/vim.so
- OK Parser: vimdoc               ABI: 14, path: /home/linuxbrew/.linuxbrew/Cellar/neovim/0.10.4/lib/nvim/parser/vimdoc.so

==============================================================================
which-key: require("which-key.health").check()

- OK Most of these checks are for informational purposes only.
  WARNINGS should be treated as a warning, and don't necessarily indicate a problem with your config.
  Please |DON'T| report these warnings as an issue.

Checking your config ~
- WARNING |mini.icons| is not installed
- OK |nvim-web-devicons| is installed

Checking for issues with your mappings ~
- OK No issues reported

checking for overlapping keymaps ~
- WARNING In mode `n`, <c> overlaps with <cc>:
  - <c>: Change
- WARNING In mode `n`, <gc> overlaps with <gcc>, <gcu>:
  
- WARNING In mode `n`, <,<Space>> overlaps with <,<Space>f<Space>f>, <,<Space>f<Space>g>, <,<Space>f<Space>r>, <,<Space>e<Space>v>:
  - <,<Space>>: remove trailing space
  - <,<Space>f<Space>f>: Dashboard-action: Find  File                              
  - <,<Space>f<Space>g>: Dashboard-action: Project grep                            
  - <,<Space>f<Space>r>: Dashboard-action: Recently opened files                   
  - <,<Space>e<Space>v>: Dashboard-action: Open Nvim config                        
- WARNING In mode `n`, <sr> overlaps with <srb>:
  
- WARNING In mode `n`, <sd> overlaps with <sdb>:
  
- WARNING In mode `i`, <,> overlaps with <,r;>:
  - <,r;>: insert R pipe
- WARNING In mode `x`, <@> overlaps with <@(targets)>:
  - <@>: :help |v_@-default|
- WARNING In mode `x`, <a> overlaps with <aI>, <as>, <ab>, <ai>:
  - <a>: around
  - <as>: sentence
  - <ab>: [(]) block
- WARNING In mode `x`, <i> overlaps with <iI>, <iu>, <ii>, <iB>, <is>, <ib>:
  - <i>: inside
  - <iu>: URL text object
  - <iB>: buffer text object
  - <is>: inner sentence
  - <ib>: inner [(])
- WARNING In mode `o`, <a> overlaps with <aI>, <as>, <ab>, <ai>:
  - <a>: around
  - <as>: sentence
  - <ab>: [(]) block
- WARNING In mode `o`, <i> overlaps with <iI>, <iu>, <ii>, <iB>, <is>, <ib>:
  - <i>: inside
  - <iu>: URL text object
  - <iB>: buffer text object
  - <is>: inner sentence
  - <ib>: inner [(])
- OK Overlapping keymaps are only reported for informational purposes.
  This doesn't necessarily mean there is a problem with your config.

Checking for duplicate mappings ~
- OK No duplicate mappings found

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions