UNPKG

@zeix/cause-effect

Version:

Cause & Effect - reactive state management primitives library for TypeScript.

54 lines (43 loc) 1.75 kB
import type { TestResult } from './perf-tests' import type { ReactiveFramework } from './reactive-framework' /** Parameters for a running a performance benchmark test * * The benchmarks create a rectangular grid of reactive elements, with * mutable signals in the first level, computed elements in the middle levels, * and read effect elements in the last level. * * Each test iteration modifies one signal, and then reads specified * fraction of the effect elements. * * Each non-signal node sums values from a specified number of elements * in the preceding layer. Some nodes are dynamic, and read vary * the number of sources the read for the sum. * * Tests may optionally provide result values to verify the sum * of all read effect elements in all iterations, and the total * number of non-signal updated. */ export interface TestConfig { /** friendly name for the test, should be unique */ name?: string /** width of dependency graph to construct */ width: number /** depth of dependency graph to construct */ totalLayers: number /** fraction of nodes that are static */ // TODO change to dynamicFraction staticFraction: number /** construct a graph with number of sources in each node */ nSources: number /** fraction of [0, 1] elements in the last layer from which to read values in each test iteration */ readFraction: number /** number of test iterations */ iterations: number /** sum and count of all iterations, for verification */ expected: Partial<TestResult> } export interface FrameworkInfo { /** wrapper/adapter for a benchmarking a reactive framework */ framework: ReactiveFramework /** verify the number of nodes executed matches the expected number */ testPullCounts?: boolean }