mirror of
https://github.com/status-im/re-frame-10x.git
synced 2025-02-06 11:23:23 +00:00
Add timing panel
This commit is contained in:
parent
b9ec5319f1
commit
e79fbf187c
@ -1,4 +1,5 @@
|
||||
(ns day8.re-frame.trace.metamorphic)
|
||||
(ns day8.re-frame.trace.metamorphic
|
||||
(:require [mranderson047.re-frame.v0v10v2.re-frame.utils :as utils]))
|
||||
|
||||
;; What starts an epoch?
|
||||
|
||||
@ -62,19 +63,31 @@
|
||||
; (or (quiescent? event history pattern-sequence pattern)
|
||||
; (epoch-started? event history pattern-sequence pattern)))
|
||||
;
|
||||
|
||||
(defn elapsed-time [ev1 ev2]
|
||||
(let [start-of-epoch (:start ev1)
|
||||
end-of-epoch (:end ev2)]
|
||||
(when (and (some? start-of-epoch) (some? end-of-epoch))
|
||||
#?(:cljs (js/Math.round (- end-of-epoch start-of-epoch))
|
||||
:clj (Math/round ^double (- end-of-epoch start-of-epoch))))))
|
||||
|
||||
(defn run-queue? [event]
|
||||
(and (fsm-trigger? event)
|
||||
(= (:operation event)
|
||||
[:scheduled :run-queue])))
|
||||
;
|
||||
;(defn request-animation-frame? [event history pattern-sequence pattern]
|
||||
; (= :raf (:op-type event)))
|
||||
(defn request-animation-frame? [event]
|
||||
(= :raf (:op-type event)))
|
||||
;
|
||||
;(defn request-animation-frame-end? [event history pattern-sequence pattern]
|
||||
; (= :raf-end (:op-type event)))
|
||||
;
|
||||
(defn summarise-event [ev]
|
||||
(dissoc ev :start :duration :end :child-of))
|
||||
(-> ev
|
||||
(dissoc :start :duration :end :child-of)
|
||||
(utils/dissoc-in [:tags :app-db-before])
|
||||
(utils/dissoc-in [:tags :app-db-after])))
|
||||
|
||||
|
||||
(defn summarise-match [match]
|
||||
(map summarise-event match))
|
||||
@ -112,6 +125,11 @@
|
||||
(= (:operation event)
|
||||
[:idle :add-event])))
|
||||
|
||||
(defn finish-run? [event]
|
||||
(and (fsm-trigger? event)
|
||||
(= (:operation event)
|
||||
[:running :finish-run])))
|
||||
|
||||
(defn event-run? [event]
|
||||
(= :event (:op-type event)))
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
(ns day8.re-frame.trace.subs
|
||||
(:require [mranderson047.re-frame.v0v10v2.re-frame.core :as rf]
|
||||
[day8.re-frame.trace.metamorphic :as metam]))
|
||||
[day8.re-frame.trace.metamorphic :as metam]
|
||||
[day8.re-frame.trace.utils.utils :as utils]))
|
||||
|
||||
(rf/reg-sub
|
||||
:settings/root
|
||||
@ -104,8 +105,7 @@
|
||||
:<- [:epochs/beginning-trace-id]
|
||||
:<- [:epochs/ending-trace-id]
|
||||
(fn [[traces beginning ending] _]
|
||||
(filter #(<= beginning (:id %) ending) traces)
|
||||
#_traces))
|
||||
(into [] (filter #(<= beginning (:id %) ending)) traces)))
|
||||
|
||||
(rf/reg-sub
|
||||
:traces/show-epoch-traces?
|
||||
@ -200,3 +200,36 @@
|
||||
(fn [[current total]]
|
||||
(and (not (zero? current))
|
||||
(some? current))))
|
||||
|
||||
;;
|
||||
|
||||
(rf/reg-sub
|
||||
:timing/total-epoch-time
|
||||
:<- [:traces/current-event-traces]
|
||||
(fn [traces]
|
||||
(let [start-of-epoch (nth traces 0)
|
||||
end-of-epoch (utils/last-in-vec traces)]
|
||||
(metam/elapsed-time start-of-epoch end-of-epoch))))
|
||||
|
||||
(rf/reg-sub
|
||||
:timing/animation-frame-count
|
||||
:<- [:traces/current-event-traces]
|
||||
(fn [traces]
|
||||
(count (filter metam/request-animation-frame? traces))))
|
||||
|
||||
(rf/reg-sub
|
||||
:timing/event-processing-time
|
||||
:<- [:traces/current-event-traces]
|
||||
(fn [traces]
|
||||
(let [start-of-epoch (nth traces 0)
|
||||
finish-run (first (filter metam/finish-run? traces))]
|
||||
(js/console.log "Start" start-of-epoch "fin" finish-run)
|
||||
(metam/elapsed-time start-of-epoch finish-run))))
|
||||
|
||||
(rf/reg-sub
|
||||
:timing/render-time
|
||||
:<- [:traces/current-event-traces]
|
||||
(fn [traces]
|
||||
(let [start-of-render (first (filter metam/request-animation-frame? traces))
|
||||
end-of-epoch (utils/last-in-vec traces)]
|
||||
(metam/elapsed-time start-of-render end-of-epoch))))
|
||||
|
@ -1,2 +1,16 @@
|
||||
(ns day8.re-frame.trace.utils.utils)
|
||||
|
||||
(defn last-in-vec
|
||||
"Get the last element in the vector"
|
||||
[v]
|
||||
(nth v (dec (count v))))
|
||||
|
||||
(defn find-all-indexes-in-vec
|
||||
"Gets the index of all items in vec that match the predicate"
|
||||
[pred v]
|
||||
(keep-indexed #(when (pred %2) %1) v))
|
||||
|
||||
(defn find-index-in-vec
|
||||
"Gets the index of the first item in vec that matches the predicate"
|
||||
[pred v]
|
||||
(first (find-all-indexes-in-vec pred v)))
|
||||
|
@ -8,11 +8,11 @@
|
||||
:gap "5px"
|
||||
:children
|
||||
[
|
||||
[rc/label :label (str "Number of matches " (prn-str @(rf/subscribe [:epochs/number-of-matches])))]
|
||||
[rc/label :label (str "Number of epochs " (prn-str @(rf/subscribe [:epochs/number-of-matches])))]
|
||||
[rc/label :label (str "Beginning trace " (prn-str @(rf/subscribe [:epochs/beginning-trace-id])))]
|
||||
[rc/label :label (str "Ending " (prn-str @(rf/subscribe [:epochs/ending-trace-id])))]
|
||||
|
||||
[rc/label :label "Matches"]
|
||||
[rc/label :label "Epochs"]
|
||||
(for [match (:matches @(rf/subscribe [:epochs/epoch-root]))]
|
||||
^{:key (:id (first match))}
|
||||
[rc/v-box
|
||||
|
@ -2,14 +2,19 @@
|
||||
(:require [clojure.string :as str]
|
||||
[devtools.prefs]
|
||||
[devtools.formatters.core]
|
||||
[day8.re-frame.trace.view.components :as components]
|
||||
[mranderson047.re-frame.v0v10v2.re-frame.core :as rf]
|
||||
[mranderson047.reagent.v0v6v0.reagent.core :as r]
|
||||
[day8.re-frame.trace.utils.re-com :as rc]
|
||||
[day8.re-frame.trace.common-styles :as common])
|
||||
[day8.re-frame.trace.utils.re-com :as rc])
|
||||
(:require-macros [day8.re-frame.trace.utils.macros :as macros]))
|
||||
|
||||
(defn render []
|
||||
|
||||
[rc/v-box
|
||||
:padding "12px 0px"
|
||||
:children [[rc/label :label "Timing panel"]]])
|
||||
:children [[rc/label :label "Total Epoch Time"]
|
||||
[rc/label :label (str @(rf/subscribe [:timing/total-epoch-time]) "ms")]
|
||||
[rc/label :label "Animation Frames"]
|
||||
[rc/label :label @(rf/subscribe [:timing/animation-frame-count])]
|
||||
[rc/label :label "Event time"]
|
||||
[rc/label :label (str @(rf/subscribe [:timing/event-processing-time]) "ms")]
|
||||
[rc/label :label "Render/Subscription time"]
|
||||
[rc/label :label (str @(rf/subscribe [:timing/render-time]) "ms")]]])
|
||||
|
Loading…
x
Reference in New Issue
Block a user