diff --git a/test/freactive/dom_perf.cljs b/test/freactive/dom_perf.cljs index 0d25fe0..0d15e1a 100644 --- a/test/freactive/dom_perf.cljs +++ b/test/freactive/dom_perf.cljs @@ -47,18 +47,6 @@ (defonce n (atom 4)) -;(defn left-offset-x [i] -; (rx (* (inc i) (/ @mouse-x (inc @n))))) -; -;(defn right-offset-x [i] -; (rx (let [mx @mouse-x] (+ mx (* (inc i) (/ (- @width mx) (inc @n))))))) -; -;(defn top-offset-y [j] -; (rx (* (inc j) (/ @mouse-y (inc @n))))) -; -;(defn bottom-offset-y [j] -; (rx (let [my @mouse-y] (+ my (* (inc j) (/ (- @height my) (inc @n))))))) - (defn- spacing-factor [n i] (let [i (inc i) n (inc n) @@ -89,71 +77,27 @@ {:width "100%" :height "100%" :style {:position "absolute" :left 0 :top "1em"}} (circle mouse-x mouse-y) - (debug-rx - (rx (let [n* @n - spacer (partial spacing-factor n*) - offsets (map spacer (range n*)) - lefts (vec (for [x offsets] (rx (* x @mouse-x)))) - rights (vec (for [x (reverse offsets)] (rx (let [w @width] (- w (* x (- w @mouse-x))))))) - tops (vec (for [y offsets] (rx (* y @mouse-y)))) - bottoms (vec (for [y (reverse offsets)] (rx (let [h @height] (- h (* y (- h @mouse-y)))))))] - [:svg/g - (for [i (range n*)] (circle (nth lefts i) mouse-y)) - (for [i (range n*)] (circle (nth rights i) mouse-y)) - (for [j (range n*)] (circle mouse-x (nth tops j))) - (for [j (range n*)] (circle mouse-x (nth bottoms j))) - (for [i (range n*) j (range n*)] (circle (nth lefts i) (nth tops j))) - (for [i (range n*) j (range n*)] (circle (nth lefts i) (nth bottoms j))) - (for [i (range n*) j (range n*)] (circle (nth rights i) (nth tops j))) - (for [i (range n*) j (range n*)] (circle (nth rights i) (nth bottoms j)))])) - (fn [capture] - (println "captured" capture)) - (fn [_ _] - (println "invalidated"))) - ;(rx [:svg/g (for [i (range @n)] (circle (left-offset-x i) mouse-y))]) - ;(rx [:svg/g (for [i (range @n)] (circle (right-offset-x i) mouse-y))]) - ;(rx [:svg/g (for [j (range @n)] (circle mouse-x (top-offset-y j)))]) - ;(rx [:svg/g (for [j (range @n)] (circle mouse-x (bottom-offset-y j)))]) - ;(rx [:svg/g (for [i (range @n) j (range @n)] - ; (circle (left-offset-x i) (top-offset-y j)))]) - ;(rx [:svg/g (for [i (range @n) j (range @n)] - ; (circle (right-offset-x i) (top-offset-y j)))]) - ;(rx [:svg/g (for [i (range @n) j (range @n)] - ; (circle (left-offset-x i) (bottom-offset-y j)))]) - ;(rx [:svg/g (for [i (range @n) j (range @n)] - ; (circle (right-offset-x i) (bottom-offset-y j)))]) - - ;(btn (rx (- @width 40)) 16 "red" "-" (fn [e] (swap! n dec))) - ;(btn (rx (- @width 16)) 16 "green" "+" (fn [e] (swap! n inc))) - - ;[:svg/g {:on-mousedown (fn [e] (swap! n dec))} - ; [:svg/circle {:fill "red" - ; :r 8 :cx (rx ) :cy 16}] - ; :svg/text {:x (rx (- @width 50))}] - ;[:svg/circle {:fill "green" :on-mousedown (fn [e] (swap! n inc)) - ; :r 8 :cx (rx (- @width 16)) :cy 16}] - ; - ] - - ]) + (rx (let [n* @n + spacer (partial spacing-factor n*) + offsets (map spacer (range n*)) + lefts (vec (for [x offsets] (rx (* x @mouse-x)))) + rights (vec (for [x (reverse offsets)] (rx (let [w @width] (- w (* x (- w @mouse-x))))))) + tops (vec (for [y offsets] (rx (* y @mouse-y)))) + bottoms (vec (for [y (reverse offsets)] (rx (let [h @height] (- h (* y (- h @mouse-y)))))))] + [:svg/g + (for [i (range n*)] (circle (nth lefts i) mouse-y)) + (for [i (range n*)] (circle (nth rights i) mouse-y)) + (for [j (range n*)] (circle mouse-x (nth tops j))) + (for [j (range n*)] (circle mouse-x (nth bottoms j))) + (for [i (range n*) j (range n*)] (circle (nth lefts i) (nth tops j))) + (for [i (range n*) j (range n*)] (circle (nth lefts i) (nth bottoms j))) + (for [i (range n*) j (range n*)] (circle (nth rights i) (nth tops j))) + (for [i (range n*) j (range n*)] (circle (nth rights i) (nth bottoms j)))])) + ]]) (dom/mount! (.getElementById js/document "root") (view)) -(fw/watch-and-reload - ;; :websocket-url "ws://localhost:3449/figwheel-ws" default - ;;:jsload-callback (fn [] (print "reloaded") - ) - - -;; MBA Chrome -;; n=4, 37-43fps -;; n=8, 20-30fps -;; n-12, 4.7fps -;; -;; After refactor request-animation-frame -;; n=4, 47-57fps -;; n=8, 28fps -;; n=12, 18fps +(fw/watch-and-reload)