Miguel de Benito Delgado 756541939a
🔧 Add renderer benchmark runner (#12756)
Add a CLI under frontend/performance/benches/render_wasm that builds the
renderer, runs seeded scenes (rects, plus, paths, masks) in headless
Chromium and saves per-case timings.

- build, run: prepare or reuse builds; measure cases with warmups,
  repetitions, deadlines
- ab: build and compare Cargo feature configurations
- compare, merge: median changes with bootstrap CIs between saved runs,
  guarded by scene, build and settings checks
- purge: delete managed builds, runs or comparisons
- GPU runs through `run-devenv --gpu`

Lint, format and pnpm scripts now cover performance/ and its tests.

AI-assisted-by: gpt-6.1-sol, deepseek-flash, muse-spark, glm-5.3, gpt6-astra, claude-5.5-sonnet, claude-haiku-5.5
2026-11-12 11:02:34 +01:00

42 lines
1.5 KiB
Clojure

;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS SUBSIDIARY SL
(ns benches.render-wasm.node.cli.request
"Resolved benchmark requests, sender defaults and receiver validation."
(:require
[app.common.schema :as sm]
[benches.render-wasm.node.cli.console :as console]
[benches.render-wasm.node.cli.help :as help]
[benches.render-wasm.node.cli.registry :as registry]
[malli.transform :as mt]))
(defn- command-schema
[command options]
[:map {:closed true}
[:command [:= command]]
[:console {:default {}} console/schema:console]
[:options {:default {}} options]])
(def schema:request
(into [:multi {:dispatch :command}]
(map (fn [[command definition]]
[command (command-schema command (:schema definition))]))
(conj registry/commands ["help" {:schema help/schema:options}])))
(def ^:private default-decoder
(delay (sm/decoder schema:request (mt/default-value-transformer))))
(defn apply-defaults
"Fills contextual defaults for the selected command and build source."
[partial-request]
(@default-decoder partial-request))
(def check
"Returns a complete valid request, or throws with schema explain data."
(sm/check-fn schema:request
:hint "invalid renderer benchmark request"
:type ::invalid-request))