UNPKG

@zeix/cause-effect

Version:

Cause & Effect - reactive state management with signals.

54 lines (43 loc) 1.77 kB
import { TestResult } from "./perf-tests"; import { 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; }