Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 55s
stats.sx reports hit-ratio, cost-weighted work-recomputed/work-saved, savings-ratio, and exec-summary over an execution record. Verifies cold (0 saved), warm (all saved), and incremental (saved = unchanged, ran = dirty closure). stats 12/12, total 144/144. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
151 lines
3.2 KiB
Plaintext
151 lines
3.2 KiB
Plaintext
; execution stats: hit ratio + memoized work saved (cost-weighted).
|
|
|
|
(define st-RT (artdag/op-table-runner {:in (fn (p i) (get p :v)) :add (fn (p i) (+ (nth i 0) (nth i 1))) :inc (fn (p i) (+ 1 (first i)))}))
|
|
|
|
(define
|
|
st-D
|
|
(artdag/build
|
|
(list
|
|
(list "p" "in" (list) {:v 10})
|
|
(list "q" "in" (list) {:v 20})
|
|
(list "b" "inc" (list "p") {})
|
|
(list "c" "inc" (list "q") {})
|
|
(list "d" "add" (list "b" "c") {} true))))
|
|
|
|
; same shape, leaf q changed -> dirty closure {q,c,d}
|
|
(define
|
|
st-D2
|
|
(artdag/build
|
|
(list
|
|
(list "p" "in" (list) {:v 10})
|
|
(list "q" "in" (list) {:v 21})
|
|
(list "b" "inc" (list "p") {})
|
|
(list "c" "inc" (list "q") {})
|
|
(list "d" "add" (list "b" "c") {} true))))
|
|
|
|
(define st-W (artdag/op-cost {:add 5 :inc 2}))
|
|
|
|
; ---- cold run ----
|
|
|
|
(artdag-test
|
|
"cold run: hit ratio is zero"
|
|
(let
|
|
((cache (persist/open)))
|
|
(artdag/hit-ratio (artdag/run st-D st-RT cache)))
|
|
0)
|
|
|
|
(artdag-test
|
|
"cold run: nothing saved"
|
|
(let
|
|
((cache (persist/open)))
|
|
(artdag/work-saved (artdag/run st-D st-RT cache) st-D artdag/const-cost))
|
|
0)
|
|
|
|
(artdag-test
|
|
"cold run: all work runs"
|
|
(let
|
|
((cache (persist/open)))
|
|
(artdag/work-recomputed
|
|
(artdag/run st-D st-RT cache)
|
|
st-D
|
|
artdag/const-cost))
|
|
5)
|
|
|
|
(artdag-test
|
|
"cold run: weighted work ran"
|
|
(let
|
|
((cache (persist/open)))
|
|
(artdag/work-recomputed (artdag/run st-D st-RT cache) st-D st-W))
|
|
11)
|
|
|
|
; ---- warm rerun ----
|
|
|
|
(artdag-test
|
|
"warm rerun: hit ratio is one"
|
|
(let
|
|
((cache (persist/open)))
|
|
(begin
|
|
(artdag/run st-D st-RT cache)
|
|
(artdag/hit-ratio (artdag/run st-D st-RT cache))))
|
|
1)
|
|
|
|
(artdag-test
|
|
"warm rerun: savings ratio is one"
|
|
(let
|
|
((cache (persist/open)))
|
|
(begin
|
|
(artdag/run st-D st-RT cache)
|
|
(artdag/savings-ratio
|
|
(artdag/run st-D st-RT cache)
|
|
st-D
|
|
artdag/const-cost)))
|
|
1)
|
|
|
|
(artdag-test
|
|
"warm rerun: all weighted work saved"
|
|
(let
|
|
((cache (persist/open)))
|
|
(begin
|
|
(artdag/run st-D st-RT cache)
|
|
(artdag/work-saved (artdag/run st-D st-RT cache) st-D st-W)))
|
|
11)
|
|
|
|
; ---- partial (incremental) ----
|
|
|
|
(artdag-test
|
|
"incremental: total is every node"
|
|
(let
|
|
((cache (persist/open)))
|
|
(begin
|
|
(artdag/run st-D st-RT cache)
|
|
(artdag/exec-total (artdag/run st-D2 st-RT cache))))
|
|
5)
|
|
|
|
(artdag-test
|
|
"incremental: saved work counts unchanged nodes"
|
|
(let
|
|
((cache (persist/open)))
|
|
(begin
|
|
(artdag/run st-D st-RT cache)
|
|
(artdag/work-saved
|
|
(artdag/run st-D2 st-RT cache)
|
|
st-D2
|
|
artdag/const-cost)))
|
|
2)
|
|
|
|
(artdag-test
|
|
"incremental: ran work counts dirty closure"
|
|
(let
|
|
((cache (persist/open)))
|
|
(begin
|
|
(artdag/run st-D st-RT cache)
|
|
(artdag/work-recomputed
|
|
(artdag/run st-D2 st-RT cache)
|
|
st-D2
|
|
artdag/const-cost)))
|
|
3)
|
|
|
|
(artdag-test
|
|
"summary reports recompute count"
|
|
(let
|
|
((cache (persist/open)))
|
|
(get
|
|
(artdag/exec-summary
|
|
(artdag/run st-D st-RT cache)
|
|
st-D
|
|
artdag/const-cost)
|
|
:recomputed))
|
|
5)
|
|
|
|
(artdag-test
|
|
"summary reports total"
|
|
(let
|
|
((cache (persist/open)))
|
|
(get
|
|
(artdag/exec-summary
|
|
(artdag/run st-D st-RT cache)
|
|
st-D
|
|
artdag/const-cost)
|
|
:total))
|
|
5)
|