From ced83808d6ffb04251256f85c9439bd6ea8dfb17 Mon Sep 17 00:00:00 2001 From: narimiran Date: Fri, 13 Sep 2024 07:15:42 +0200 Subject: [PATCH] let CIs also benchmark the solutions --- .github/workflows/test.yml | 7 +++++ clojure/tests/solutions_benchmark.clj | 37 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 clojure/tests/solutions_benchmark.clj diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ba940aa..1717c9f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,6 +7,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] + kind: [tests, benchmark] fail-fast: false runs-on: ${{ matrix.os }} @@ -38,7 +39,13 @@ jobs: restore-keys: cljdeps- - name: Test helpers + if : ${{ matrix.kind == 'tests' }} run: clojure -M clojure/tests/aoc_tests.clj - name: Test solutions + if : ${{ matrix.kind == 'tests' }} run: clojure -M clojure/tests/solutions_tests.clj + + - name: Benchmark solutions + if : ${{ matrix.kind == 'benchmark' }} + run: clojure -M:profile clojure/tests/solutions_benchmark.clj diff --git a/clojure/tests/solutions_benchmark.clj b/clojure/tests/solutions_benchmark.clj new file mode 100644 index 0000000..0796183 --- /dev/null +++ b/clojure/tests/solutions_benchmark.clj @@ -0,0 +1,37 @@ +(ns solutions-benchmark + (:require + [criterium.core :as c] + [clojure.string :as str] + [clojure.pprint :as pp] + aoc + day01 day02 day03 day04 day05 + day06 day07 day08 day09 day10 + day11 day12 day13 day14 day15 + day16 day17 day18 day19 day20 + day21 day22 day23 day24 day25)) + + +(defn extract-time [res] + (->> res + str/split-lines + second + (drop-while #(not (#{\:} %))) + rest + str/join)) + +(def results (atom [])) + +(def first-day 1) +(def last-day 3) + +(doseq [i (range first-day (inc last-day))] + (println "BENCHMARKING DAY" i) + (let [res (with-out-str + (c/quick-bench ((eval (symbol (format "day%02d" i) "solve")) (aoc/read-file i))))] + (println res) + (swap! results conj {:day i :time (extract-time res)})) + (println "\n\n\n")) + + +(println "SUMMARY:\n") +(pp/print-table @results)