(ns bench (:require [app.common.data :as d] [app.common.data.macros :as dm] [app.common.geom.point :as gpt] [app.common.geom.point :as gpt] [app.common.geom.shapes.rect :as gsr] [app.common.perf :as perf] [app.common.types.modifiers :as ctm] [clojure.spec.alpha :as s] [clojure.test.check.generators :as gen])) (def points (gen/sample (s/gen ::gpt/point) 20)) (defn bench-points [] #_(perf/benchmark :f #(gpt/center-points-old points) :samples 20 :max-iterations 500000 :name "base") (perf/benchmark :f #(gpt/center-points points) :max-iterations 500000 :samples 20 :name "optimized")) (def modifiers (-> (ctm/empty) (ctm/move (gpt/point 100 200)) (ctm/resize (gpt/point 100 200) (gpt/point 2.0 0.5)) (ctm/move (gpt/point -100 -200)) (ctm/resize (gpt/point 100 200) (gpt/point 2.0 0.5)) (ctm/rotation (gpt/point 0 0) -100) (ctm/resize (gpt/point 100 200) (gpt/point 2.0 0.5)))) (defn bench-modifiers [] (perf/benchmark :f #(ctm/modifiers->transform modifiers) :max-iterations 50000 :samples 20 :name "current") #_(perf/benchmark :f #(ctm/modifiers->transform-2 modifiers) :max-iterations 50000 :samples 20 :name "optimized")) ;; (ctm/modifiers->transform-2 modifiers) (defn ^:dev/after-load after-load [] #_(bench-modifiers)) (defn main [& [name]] (case name "points" (bench-points) "modifiers" (bench-modifiers) (println "available: points")) #_(.exit js/process 0))