From 43a9acec282132bd6b8c829248971e3e1ccc9588 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 5 Nov 2017 00:57:26 +0100 Subject: [PATCH] Simplify doom-get-outdated-packages (1 thread per quelpa pkg) --- core/autoload/packages.el | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/core/autoload/packages.el b/core/autoload/packages.el index c6bc37c11..413e21c66 100644 --- a/core/autoload/packages.el +++ b/core/autoload/packages.el @@ -134,33 +134,20 @@ Used by `doom/packages-update'." (if (eq (doom-package-backend sym) 'quelpa) quelpa-pkgs elpa-pkgs))))) - ;; The bottleneck in this process is quelpa's version checks, so partition - ;; and check them asynchronously. - (let* ((max-threads 3) ; TODO Do real CPU core/thread count - (min-per-part 2) - (per-part (max min-per-part (ceiling (/ (length quelpa-pkgs) (float max-threads))))) - (leftover (mod (length quelpa-pkgs) per-part)) - parts - futures) - (while quelpa-pkgs - (let (part) - (dotimes (_i (+ per-part leftover)) - (when-let (p (pop quelpa-pkgs)) - (push p part))) - (setq leftover 0) - (push (nreverse part) parts))) - (dolist (part (reverse parts)) - (debug! "New thread for: %s" part) + ;; The bottleneck in this process is quelpa's version checks, so check them + ;; asynchronously. + (let (futures) + (dolist (pkg quelpa-pkgs) + (debug! "New thread for: %s" pkg) (push (async-start `(lambda () (setq user-emacs-directory ,user-emacs-directory) (let ((noninteractive t)) (load ,(expand-file-name "core.el" doom-core-dir))) - (delq nil (mapcar #'doom-package-outdated-p ',part)))) + (doom-package-outdated-p ',pkg))) futures)) - (apply #'append - (delq nil (mapcar #'doom-package-outdated-p elpa-pkgs)) - (mapcar #'async-get futures))))) + (append (delq nil (mapcar #'doom-package-outdated-p elpa-pkgs)) + (delq nil (mapcar #'async-get (reverse futures))))))) ;;;###autoload (defun doom-get-orphaned-packages ()