From 58b6041c9a9fdba1e0e7df480bd9a1c6b8557467 Mon Sep 17 00:00:00 2001 From: Minh Tuan Nguyen Date: Wed, 29 Jun 2016 19:15:13 +0200 Subject: [PATCH] speed up get-version by excecuting queries parallely --- src/leiningen/leinsync/deps.clj | 20 +++++++++++++------- test/leiningen/leinsync/deps_test.clj | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/leiningen/leinsync/deps.clj b/src/leiningen/leinsync/deps.clj index 66d1cf2..d9d54ae 100644 --- a/src/leiningen/leinsync/deps.clj +++ b/src/leiningen/leinsync/deps.clj @@ -1,7 +1,8 @@ (ns leiningen.leinsync.deps (:require [leiningen.leinsync.table-pretty-print :as pp] [ancient-clj.core :as ancient] - [leiningen.core.main :as m])) + [leiningen.core.main :as m]) + (:import (java.util.concurrent Executors))) (def different-marker "==> ") @@ -41,18 +42,23 @@ (count) (< 1))) -(defn mark-for-possible-update [get-version marker] +(defn mark-for-possible-update [last-version-map marker] (fn [[k v]] - (let [last-version (get-version k) + (let [last-version (get last-version-map k) deps-info {:name k :last-version last-version}] (if (has-newer-version? v last-version) (merge deps-info (zipmap (keys v) (map #(str marker %) (vals v)))) (merge deps-info v))))) +(defn parallel-get-version [deps] + (let [tasks (map #(future {% (last-version-of %)}) deps)] + (reduce merge (doall (pmap deref tasks))))) + (defn pretty-print-structure [enrich-version deps] - (->> deps - (seq) - (map (mark-for-possible-update enrich-version different-marker)))) + (let [last-version-map (enrich-version (keys deps))] + (->> deps + (seq) + (map (mark-for-possible-update last-version-map different-marker))))) (defn log-resouces-table [m] (m/info "\n* List of dependencies") @@ -64,5 +70,5 @@ (->> projects-desc (deps->project) (merge-deps) - (pretty-print-structure last-version-of) + (pretty-print-structure parallel-get-version) (log-resouces-table))) \ No newline at end of file diff --git a/test/leiningen/leinsync/deps_test.clj b/test/leiningen/leinsync/deps_test.clj index d347b19..80ff91d 100644 --- a/test/leiningen/leinsync/deps_test.clj +++ b/test/leiningen/leinsync/deps_test.clj @@ -70,7 +70,7 @@ :dep-3 {:deps-project-1 :v-3} :dep-4 {:deps-project-3 :v-4} :dep-5 {:deps-project-1 :v-6, :deps-project-3 :v-2}} - (d/pretty-print-structure (fn [x] (get m x))) + (d/pretty-print-structure (fn [x] m)) (sort-by :name)))))) (deftest ^:unit has-newer-version?