Présentation de Consult et du problème perçu
Le paquet Consult propose des commandes de recherche asynchrones (consult-fd, consult-find, consult-grep, consult-git-grep, consult-ripgrep). Lorsqu’on tape dans le minibuffer, les résultats n’apparaissent pas immédiatement, contrairement à Counsel. Cette latence provient des temporisations internes qui retardent le lancement du processus externe et la mise à jour de l’interface.
Mécanismes de debounce, throttle et refresh
Trois variables contrôlent le comportement : consult-async-input-debounce, consult-async-input-throttle et consult-async-refresh-delay. Le debounce attend 0,05 s après la dernière frappe avant d’invoquer le processus (consult-async-input-debounce = 0.05). Chaque nouvelle touche réinitialise le minuteur, évitant ainsi la création de processus intermédiaires.
(setq consult-async-input-debounce 0.05)Le throttle impose une limite stricte : même si le debounce se déclenche, un nouveau processus ne peut être lancé plus souvent qu’une fois toutes les 0,1 s (consult-async-input-throttle = 0.1).
(setq consult-async-input-throttle 0.1)Le refresh delay détermine la fréquence de rafraîchissement de l’UI avec les résultats asynchrones. Une valeur de 0,05 s (consult-async-refresh-delay = 0.05) force une mise à jour toutes les 50 ms dès que de nouvelles lignes sont disponibles.
(setq consult-async-refresh-delay 0.05)Impact sur les performances et la consommation
Ces réglages n’accélèrent pas les outils externes (ripgrep, fd, etc.) qui utilisent déjà des algorithmes multithreadés optimisés. Ils raccourcissent uniquement le « feedback loop » d’Emacs : le temps entre la saisie et le lancement du processus diminue, et l’affichage se rafraîchit plus souvent. Sur une machine puissante, la différence est perceptible ; sur un portable en batterie, la création fréquente de processus et les rafraîchissements rapides augmentent l’utilisation CPU et le ramasse‑miettes, réduisant l’autonomie.
Recommandations de configuration
Pour les utilisateurs qui privilégient la réactivité, les valeurs 0.05, 0.1 et 0.05 offrent un bon compromis entre latence d’entrée et charge système. Elles conviennent aux postes de travail branchés sur secteur ou aux projets de taille modérée. En revanche, sur des projets très volumineux ou sur des ordinateurs lents, les paramètres par défaut (délais plus élevés) limitent le nombre de recherches redondantes et évitent de saturer le disque et le CPU.
En résumé, ajuster les trois temporisations permet de transformer la sensation de lenteur de Consult en une expérience quasi‑instantanée, à condition d’accepter le coût supplémentaire en ressources.