From 1cbbd1595f536e665f67e0e9757c9ca27fcf8c46 Mon Sep 17 00:00:00 2001
From: Yunfei He
Date: Mon, 17 Aug 2026 12:20:26 +0800
Subject: [PATCH 1/3] feat(benchmarks): compare packages by scenario
---
.agents/docs/benchmark.md | 39 +-
.../components/BenchmarkResults.vue | 230 +++----
apps/website/.vitepress/config.ts | 2 +-
apps/website/benchmarks/index.md | 4 +-
benchmarks/README.md | 18 +-
benchmarks/coding-agent-chat/benchmark.ts | 604 +++++++++++++-----
benchmarks/deep-tree/benchmark.ts | 92 ---
benchmarks/nested-ui/benchmark.ts | 207 ++++++
benchmarks/run.ts | 177 ++---
benchmarks/scenario.ts | 122 ++--
benchmarks/suite.ts | 100 ++-
benchmarks/wide-tree/benchmark.ts | 55 --
.../wide-wrapping-collection/benchmark.ts | 99 +++
benchmarks/worker.ts | 84 +--
.../yoga-coding-agent-chat/benchmark.ts | 153 -----
benchmarks/yoga-deep-tree/benchmark.ts | 77 ---
benchmarks/yoga-wide-tree/benchmark.ts | 58 --
17 files changed, 1140 insertions(+), 981 deletions(-)
delete mode 100644 benchmarks/deep-tree/benchmark.ts
create mode 100644 benchmarks/nested-ui/benchmark.ts
delete mode 100644 benchmarks/wide-tree/benchmark.ts
create mode 100644 benchmarks/wide-wrapping-collection/benchmark.ts
delete mode 100644 benchmarks/yoga-coding-agent-chat/benchmark.ts
delete mode 100644 benchmarks/yoga-deep-tree/benchmark.ts
delete mode 100644 benchmarks/yoga-wide-tree/benchmark.ts
diff --git a/.agents/docs/benchmark.md b/.agents/docs/benchmark.md
index 97b20ff..3a00f48 100644
--- a/.agents/docs/benchmark.md
+++ b/.agents/docs/benchmark.md
@@ -2,24 +2,43 @@
## Purpose and comparison boundary
-The public benchmark measures TaffyJS as a JavaScript product in Node.js. Every timed operation starts at a public JavaScript API and includes the complete implementation cost beneath that call. JavaScript validation and conversion, wrapper and compatibility work, Node-API, emnapi, WASI, Wasm memory transfer, callbacks, output construction, redundant computation, and unnecessary data movement all remain part of the result. The benchmark must not bypass a public wrapper, call a private binding, substitute an internal Rust or C++ timer, preconvert data into a private representation, or subtract work in order to make implementations look more alike.
+[VOUCHED @hyfdev 2026-08-17]
-The benchmark has two comparison groups:
+In one fixed Node.js environment, the public benchmark measures the real cost for a user to complete the same semantically equivalent layout transaction through the JavaScript APIs of the packages that are actually published. Its purpose is to explain the performance tradeoffs among packages, public API abstractions, and runtimes, and to provide a stable baseline for future optimization and regression detection.
-- The Taffy API group runs the same public benchmark source against `@taffyjs/node` and `@taffyjs/wasm`.
-- The Yoga API group runs the same public Yoga-shaped benchmark source against `@taffyjs/yoga`, `yoga-layout@3.2.1`, and `@taffyjs/yoga-wasm`.
+Proving that `@taffyjs/node` is necessarily the fastest is not a benchmark objective and must not influence scenario selection. Any native performance advantage is a measured result rather than an assumption built into the workloads.
-Only implementations completing a semantically equivalent user transaction receive a speed comparison. Validation happens outside the timed interval and must never normalize the measured path. An unsupported implementation is reported as unsupported rather than receiving a transformed workload. Different API groups do not produce a shared ranking, and the benchmark never combines unrelated scenarios into an overall score or winner.
+The public benchmark measures TaffyJS as a JavaScript product. Every timed operation starts at a public JavaScript API and includes the complete implementation cost beneath that call. JavaScript validation and conversion, wrapper and compatibility work, Node-API, emnapi, WASI, Wasm memory transfer, callbacks, output construction, redundant computation, and unnecessary data movement all remain part of the result. The benchmark must not bypass a public wrapper, call a private binding, substitute an internal Rust or C++ timer, preconvert data into a private representation, or subtract work in order to make implementations look more alike.
+
+[VOUCHED @hyfdev 2026-08-17]
+
+The public page and retained result are scenario-first. One semantic user scenario appears once rather than being duplicated under Taffy API and Yoga API headings. A scenario may provide separate explicit TaffyTree and Yoga Node transaction builders because their public calls differ, but both builders must complete the same named user transaction and produce equivalent required output. The benchmark does not introduce a universal adapter that hides either public API.
+
+Every applicable implementation appears as a row of that scenario's comparison table. The row identifies package, public API, and runtime so readers can distinguish `@taffyjs/node` through TaffyTree on native Node-API, `@taffyjs/wasm` through TaffyTree on WASI Wasm, `@taffyjs/yoga` through Yoga Node on native Taffy, `@taffyjs/yoga-wasm` through Yoga Node on WASI Taffy, and `yoga-layout@3.2.1` through Yoga Node on Yoga's WebAssembly binding. A common scenario therefore supports both product-level comparison across public abstractions and same-Yoga-API comparison without publishing the scenario or `yoga-layout` measurement twice.
+
+Only implementations completing a semantically equivalent user transaction receive a speed comparison. Validation happens outside the timed interval and must never normalize the measured path. Different APIs may be ranked inside one named scenario when their required observable result is equivalent; the result is an end-to-end product comparison and must not be attributed to one internal layer alone. An unsupported implementation is omitted from that scenario rather than receiving a transformed workload. A shared scenario uses `yoga-layout` as the explicit `1.00x` relative-throughput reference while retaining absolute throughput and latency; a scenario without Yoga uses its stated applicable baseline. The benchmark never combines unrelated scenarios into an overall score or winner.
All official results use one fixed Node.js environment. Browser benchmark execution, browser result switching, and comparisons between Node and browser environments are outside this design.
## Scenarios
-Every benchmark case is a scenario with a named question, input and scale, public API operation sequence, timed boundary, required output reads, applicable comparison groups, and completion check. A captured application snapshot, a modeled user transaction, a wide tree, a deep tree, and the same structure at different node counts are equal kinds of scenario on the benchmark page. Each explains what it simulates and what operation is measured; the project does not introduce a separate primary, synthetic, or Diagnostics result hierarchy.
+Every benchmark case is a scenario with a named question, input and scale, public API operation sequence, timed boundary, required output reads, applicable implementations, and completion check. A captured application snapshot, a modeled user transaction, a wide tree, a deep tree, and the same structure at different node counts are equal kinds of scenario on the benchmark page. Each explains what it simulates and what operation is measured; the project does not introduce a separate primary, synthetic, or Diagnostics result hierarchy.
Scenario timing follows the transaction being investigated. An initial-layout scenario may create the public tree, compute layout, and read the outputs the consumer needs. A persistent-tree scenario may mutate an existing tree, recompute it, and read the affected outputs without rebuilding the tree. A batch scenario may create, compute, read or serialize, and finish one complete item. Fixture parsing, result validation, and harness bookkeeping stay outside the timed interval unless they are themselves the public operation named by the scenario. A total is measured directly rather than reconstructed by adding separately aggregated phase results.
-The current suite covers a modeled coding-agent chat transaction plus one representative 1,000-leaf wide tree and 511-node deep tree for each public API group. Captured application trees may join later as ordinary scenarios when every target can execute the same supported public transaction. The suite must be fixed before the official run whose result will be published; scenarios must not be selected or modified in response to which implementation wins.
+[VOUCHED @hyfdev 2026-08-17]
+
+The initial public suite contains exactly five scenarios:
+
+1. **Small nested UI: 50 nodes.** Create the deterministic nested public tree, compute its initial layout, read every required layout result, and complete the package's applicable public lifecycle. This exposes fixed package and API costs for a small layout transaction.
+2. **Nested UI: 500 nodes.** Run the same transaction and deterministic structure family at ten times the node count. This exposes how the package and runtime tradeoff changes with scale.
+3. **Wide wrapping collection: 500 items.** Create one wrapping container with 500 direct items, compute its initial layout, read every required result, and complete the applicable lifecycle. The root makes 501 total nodes; the public parameter remains the user-facing item count. This distinguishes a wide, batched topology from the similarly sized nested transaction.
+4. **Coding-agent chat: initial layout.** Create the modeled application tree and JavaScript measurement contexts, compute through the public Measure callback, read every required result, and complete the applicable lifecycle. This exposes synchronous JavaScript callback crossings in a complete application transaction.
+5. **Coding-agent chat: viewport resize.** Prepare and initially lay out the persistent public tree outside timing. Each timed transaction changes the root between two fixed viewport sizes through the public API, recomputes layout, and reads every required result. Persistent-tree disposal happens after measurement rather than inside each resize transaction.
+
+Every scenario runs all five applicable implementations: `@taffyjs/node`, `@taffyjs/wasm`, `@taffyjs/yoga`, `@taffyjs/yoga-wasm`, and `yoga-layout`. The two API-specific implementations of a scenario must use equivalent styles, measurement behavior, viewport state, and required output while retaining the real call structure of each public API.
+
+The round parameters `50`, `500`, and `500` are intentional public workload descriptions rather than powers of two inherited from an upstream stress benchmark. The initial suite does not include captured Yoga applications, Grid, Block, super-deep trees, additional scale points, cold start, or browser measurements. A scenario or scale may be added only when it answers a concrete product question that these five do not answer; it must never be selected or modified in response to which implementation wins.
## Repository ownership
@@ -60,12 +79,12 @@ Local measurements belong under ignored `benchmarks/results/local/`. The website
The published dataset is a self-contained snapshot of the facts needed to interpret its numbers, including the scenario name and parameters, measured transaction, targets, results, environment, and TaffyJS revision. It retains enough sample evidence to support the displayed comparison. Its concrete schema and file encoding remain implementation details. The dataset is committed because it is evidence for a public performance claim, not a distributable build artifact.
-The benchmark page presents every scenario at the same level. Each applicable scenario shows either a Taffy API comparison or a Yoga API comparison without ranking unlike APIs together. It does not display browser results, a Diagnostics section, an overall score, an original-data download interface, or an empty column for a package that does not exist. Target columns come from each comparison group's target list.
+The benchmark page presents every scenario once and at the same level. Its result table contains the applicable implementation rows and the columns `Package`, `API`, `Runtime`, `ops/s`, `Median`, and `vs yoga-layout` when Yoga is applicable. A common layout scenario includes both TaffyTree and Yoga Node implementations when the required output is equivalent; a Taffy-specific Grid or Block scenario may contain only the applicable TaffyJS rows and uses an explicitly stated applicable baseline instead. The page does not display browser results, a Diagnostics section, an overall score, an original-data download interface, or empty rows for unsupported implementations.
The page footer shows only the concise environment and source identity needed by a reader, including the Node.js version, operating system and benchmark machine, and TaffyJS commit.
## Delivery sequence
-First select and document the initial scenarios and their exact transactions. Then implement the top-level benchmark workspace and the two comparison groups, prove completion and semantic equivalence outside timing, run the complete suite on the fixed Node.js benchmark host, update the retained dataset, and let the website render it. Before publication, review the result for comparison validity, measurement stability, and avoidable harness complexity.
+First select and document the initial scenarios and their exact transactions. Then implement the top-level benchmark workspace and each scenario's applicable implementations, prove completion and semantic equivalence outside timing, run the complete suite on the fixed Node.js benchmark host, update the retained dataset, and let the website render it. Before publication, review the result for comparison validity, measurement stability, and avoidable harness complexity.
-The current delivery implements the Taffy API comparison between `@taffyjs/node` and `@taffyjs/wasm` plus the Yoga API comparison between `@taffyjs/yoga`, Yoga 3.2.1, and `@taffyjs/yoga-wasm`. Captured Yoga application trees remain optional follow-up scenarios rather than a prerequisite for comparing the shipped public packages.
+Captured or capture-derived application trees remain subject to the same supported-input and semantic-equivalence requirements as every other scenario.
diff --git a/apps/website/.vitepress/components/BenchmarkResults.vue b/apps/website/.vitepress/components/BenchmarkResults.vue
index 3cda560..4b5a741 100644
--- a/apps/website/.vitepress/components/BenchmarkResults.vue
+++ b/apps/website/.vitepress/components/BenchmarkResults.vue
@@ -5,8 +5,10 @@ type ParameterValue = string | number | boolean;
interface BenchmarkTarget {
readonly id: string;
- readonly label: string;
readonly packageName: string;
+ readonly apiKind: "taffy" | "yoga";
+ readonly apiLabel: string;
+ readonly runtimeLabel: string;
}
interface BenchmarkResult {
@@ -27,13 +29,6 @@ interface BenchmarkScenario {
readonly results: readonly BenchmarkResult[];
}
-interface BenchmarkComparisonGroup {
- readonly id: string;
- readonly name: string;
- readonly targets: readonly BenchmarkTarget[];
- readonly scenarios: readonly BenchmarkScenario[];
-}
-
interface BenchmarkReport {
readonly schemaVersion: number;
readonly generatedAt: string;
@@ -53,51 +48,44 @@ interface BenchmarkReport {
readonly maxRelativeMarginOfError: number | null;
readonly maxRoundMedianSpread: number | null;
};
- readonly comparisonGroups: readonly BenchmarkComparisonGroup[];
+ readonly baselineTargetId: string;
+ readonly targets: readonly BenchmarkTarget[];
+ readonly scenarios: readonly BenchmarkScenario[];
}
const report = publishedResult as BenchmarkReport;
-if (report.schemaVersion !== 1) {
+if (report.schemaVersion !== 2) {
throw new Error(`Unsupported benchmark result schema ${report.schemaVersion}`);
}
if (report.source.dirty) {
throw new Error("Published benchmark results must come from a clean worktree");
}
-if (report.comparisonGroups.length === 0) {
- throw new Error("Published benchmark results contain no comparison groups");
+if (report.scenarios.length === 0) {
+ throw new Error("Published benchmark results contain no scenarios");
}
-const comparisonGroups = report.comparisonGroups.map((group) => {
- const baselineTarget = group.targets[0];
- if (!baselineTarget) {
- throw new Error(`${group.id} contains no benchmark targets`);
- }
+const baselineTarget = report.targets.find(({ id }) => id === report.baselineTargetId);
+if (!baselineTarget) {
+ throw new Error(`Published benchmark results are missing target ${report.baselineTargetId}`);
+}
+const scenarios = report.scenarios.map((scenario) => {
+ const baselineResult = scenario.results.find(({ targetId }) => targetId === baselineTarget.id);
+ if (!baselineResult) {
+ throw new Error(`${scenario.id} is missing its ${baselineTarget.packageName} result`);
+ }
return {
- ...group,
- baselineTarget,
- scenarios: group.scenarios.map((scenario) => {
- const baselineResult = scenario.results.find(
- ({ targetId }) => targetId === baselineTarget.id,
- );
- if (!baselineResult) {
- throw new Error(`${scenario.id} is missing its ${baselineTarget.packageName} result`);
+ ...scenario,
+ rows: report.targets.map((target) => {
+ const result = scenario.results.find(({ targetId }) => targetId === target.id);
+ if (!result) {
+ throw new Error(`${scenario.id} is missing its ${target.packageName} result`);
}
-
return {
- ...scenario,
- rows: group.targets.map((target) => {
- const result = scenario.results.find(({ targetId }) => targetId === target.id);
- if (!result) {
- throw new Error(`${scenario.id} is missing its ${target.packageName} result`);
- }
- return {
- target,
- result,
- relativeThroughput: result.hz / baselineResult.hz,
- };
- }),
+ target,
+ result,
+ relativeThroughput: result.hz / baselineResult.hz,
};
}),
};
@@ -111,6 +99,10 @@ const durationFormatter = new Intl.NumberFormat("en-US", {
minimumFractionDigits: 3,
maximumFractionDigits: 3,
});
+const relativeFormatter = new Intl.NumberFormat("en-US", {
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 3,
+});
const parameterFormatter = new Intl.NumberFormat("en-US", {
maximumFractionDigits: 3,
});
@@ -123,10 +115,6 @@ function formatParameterValue(value: ParameterValue): string {
return typeof value === "number" ? parameterFormatter.format(value) : String(value);
}
-function formatGeneratedAt(value: string): string {
- return value.replace("T", " ").replace(/\.\d{3}Z$/, " UTC");
-}
-
const operatingSystem =
report.environment.platform === "darwin"
? `macOS (Darwin ${report.environment.release}, ${report.environment.arch})`
@@ -146,81 +134,71 @@ const operatingSystem =
- {{ group.name }}
-
-
- {{ scenario.name }}
- {{ scenario.question }}
- {{ scenario.description }}
-
-
-
-
Timed transaction
-
{{ scenario.transaction }}
-
-
-
Scale
-
-
-
{{ formatParameterName(name) }}
- {{ formatParameterValue(value) }}
-
-
-
+
{{ scenario.name }}
+
{{ scenario.question }}
+
{{ scenario.description }}
+
+
+
+
Timed transaction
+
{{ scenario.transaction }}
-
-
-
-
- {{
- group.name
- }}
- {{
- scenario.name
- }}
- throughput and latency by package
-
-
-
- Package
- ops/s
- Mean (ms)
- Median (ms)
-
- Relative throughput
- {{ group.baselineTarget.label }} = 1.00×
-
-
-
-
-
-
- {{ row.target.packageName }}
-
- {{ throughputFormatter.format(row.result.hz) }}
- {{ durationFormatter.format(row.result.meanMs) }}
- {{ durationFormatter.format(row.result.medianMs) }}
- {{ throughputFormatter.format(row.relativeThroughput) }}×
-
-
-
+
+
Scale
+
+
+
{{ formatParameterName(name) }}
+ {{ formatParameterValue(value) }}
+
+
-
+
+
+
+
+
+ {{
+ scenario.name
+ }}
+ throughput and latency by package
+
+
+
+ Package
+ API
+ Runtime
+ ops/s
+ Median
+
+ vs yoga-layout
+ yoga-layout = 1.00×
+
+
+
+
+
+
+ {{ row.target.packageName }}
+
+ {{ row.target.apiLabel }}
+ {{ row.target.runtimeLabel }}
+ {{ throughputFormatter.format(row.result.hz) }}
+ {{ durationFormatter.format(row.result.medianMs) }} ms
+ {{ relativeFormatter.format(row.relativeThroughput) }}×
+
+
+
+
@@ -244,12 +222,6 @@ const operatingSystem =
{{ report.source.commit }}
-
-
Generated
-
- {{ formatGeneratedAt(report.generatedAt) }}
-
-
@@ -264,21 +236,13 @@ const operatingSystem =
color: var(--vp-c-text-2);
}
-.benchmark-group {
- margin-top: 44px;
-}
-
-.benchmark-group > h2 {
- margin: 0;
-}
-
.benchmark-scenario {
margin-top: 28px;
padding-top: 34px;
border-top: 1px solid var(--vp-c-divider);
}
-.benchmark-scenario > h3 {
+.benchmark-scenario > h2 {
margin: 0;
padding: 0;
border: 0;
@@ -362,7 +326,7 @@ const operatingSystem =
.benchmark-table-region table {
display: table;
width: 100%;
- min-width: 680px;
+ min-width: 900px;
margin: 0;
border-collapse: collapse;
}
@@ -387,6 +351,10 @@ const operatingSystem =
white-space: nowrap;
}
+.benchmark-table-region .benchmark-label {
+ text-align: left;
+}
+
.benchmark-table-region thead th {
background: var(--vp-c-bg-soft);
color: var(--vp-c-text-2);
@@ -473,7 +441,7 @@ const operatingSystem =
}
.benchmark-table-region table {
- min-width: 640px;
+ min-width: 900px;
}
.benchmark-run dl {
diff --git a/apps/website/.vitepress/config.ts b/apps/website/.vitepress/config.ts
index 9234184..9a8f0a5 100644
--- a/apps/website/.vitepress/config.ts
+++ b/apps/website/.vitepress/config.ts
@@ -60,7 +60,7 @@ const documentationSidebar = [
},
{
text: "Benchmarks",
- items: [{ text: "Node vs. Wasm", link: "/benchmarks/" }],
+ items: [{ text: "Performance", link: "/benchmarks/" }],
},
];
diff --git a/apps/website/benchmarks/index.md b/apps/website/benchmarks/index.md
index 05d4fed..0390805 100644
--- a/apps/website/benchmarks/index.md
+++ b/apps/website/benchmarks/index.md
@@ -6,8 +6,8 @@ import BenchmarkResults from "../.vitepress/components/BenchmarkResults.vue";
These measurements describe the current implementations, not their final performance potential; several known optimization opportunities have not yet been implemented.
-These results compare complete public JavaScript transactions in Node.js. The Taffy API group compares `@taffyjs/node` with `@taffyjs/wasm`. The Yoga API group compares packages through the same Yoga-shaped API. Each transaction starts after package import and includes public tree construction, data conversion, layout computation, reading the requested layout results, and any lifecycle work required by that API.
+These results compare complete public JavaScript layout transactions in Node.js. Every scenario runs through `@taffyjs/node`, `@taffyjs/wasm`, `@taffyjs/yoga`, `@taffyjs/yoga-wasm`, and `yoga-layout`. The two public API shapes use explicit implementations of the same semantic workload, including their real tree construction, conversion, layout, output-read, callback, and lifecycle costs.
-Each scenario asks a different question and stands on its own. Relative throughput uses the first target as the `1.00×` reference within its own API group. Results from different APIs or scenarios are not combined into an overall score or winner.
+Each scenario asks a different question and stands on its own. Relative throughput uses `yoga-layout` as the `1.00×` reference. Results from different scenarios are not combined into an overall score or winner.
diff --git a/benchmarks/README.md b/benchmarks/README.md
index 4e89ab8..74c301b 100644
--- a/benchmarks/README.md
+++ b/benchmarks/README.md
@@ -1,21 +1,13 @@
# Benchmarks
-This workspace measures complete public JavaScript transactions in Node.js. The Taffy API scenarios run unchanged against `@taffyjs/node` and `@taffyjs/wasm`. The Yoga API scenarios likewise run unchanged against `@taffyjs/yoga`, `yoga-layout@3.2.1`, and `@taffyjs/yoga-wasm`. Neither group bypasses a public wrapper or removes conversion and output costs.
+This workspace measures complete public JavaScript layout transactions in Node.js. Every scenario has an explicit TaffyTree implementation and an explicit Yoga Node implementation for the same semantic workload. It runs them through `@taffyjs/node`, `@taffyjs/wasm`, `@taffyjs/yoga`, `@taffyjs/yoga-wasm`, and `yoga-layout` without bypassing a public wrapper or removing API conversion, callback, output-read, or lifecycle costs.
Run `vp run benchmark` from the repository root for a local measurement. It writes the result to the ignored `benchmarks/results/local/latest.json`; `vp run benchmark --scenario=` selects one or more exact scenario IDs for local research without adding more public tasks. Run `vp run benchmark:update-website` only for a complete publication run; it rejects scenario filters and atomically replaces `benchmarks/results/published.json` after every scenario and target succeeds.
-Local runs use one quick isolated worker round per target and scenario. A website update also uses one isolated round per target and scenario with longer warmup and sampling settings. Every publication result must stay at or below 30% relative margin of error; an unstable suite fails without replacing the retained result. The retained result includes every Tinybench sample from that round.
+Local runs use one quick isolated worker round per target and scenario. A website update uses one isolated round with longer warmup and sampling settings. Every publication result must stay at or below 30% relative margin of error; an unstable suite fails without replacing the retained result. The retained result includes every Tinybench sample from that round.
-Each worker completes the configured warmup and requests garbage collection before timed sampling starts, giving each measurement the same initial heap condition. Garbage collection that occurs during the timed end-to-end transactions remains part of the measured cost.
+Each worker imports exactly one target before timing, completes the configured warmup, requests garbage collection, and then measures one scenario. Package initialization, fixture validation, and harness bookkeeping are excluded. Garbage collection during the named end-to-end transaction remains part of the result.
-Each scenario directory owns its workload and states the user transaction it measures. `run.ts` coordinates serial, isolated worker processes, validates equivalent output within each API group, captures the environment, and persists the complete result. Each worker imports exactly one target before timing and uses Tinybench for one scenario, so package initialization is excluded without letting target heaps or garbage collection contaminate one another. Yoga scenarios include public Node creation, style setters, topology construction, layout calculation, computed-layout reads, and explicit release.
+`run.ts` coordinates workers serially so targets do not compete for CPU or share heaps. Before accepting timings, it compares left, top, width, and height for every semantic node across all five implementations. The 0.001 px tolerance permits floating-point representation noise without hiding observable layout differences.
-The wide and deep categories follow the questions asked by [Taffy's upstream large-tree benchmarks](https://github.com/DioxusLabs/taffy/blob/3ce6bef173028b1cb33d782de8c262e6dd8edd39/benches/benches/flexbox.rs), but their boundary is intentionally different: Taffy upstream measures layout computation with a prepared tree, while this workspace measures public JavaScript tree construction, layout, and result reads as one transaction. The coding-agent chat case is explicitly a maintained model, not a captured production application.
-
-The current suite keeps one representative scale for each wide-tree and deep-tree question. The retained 1,000-leaf wide tree and 511-node deep tree already distinguish the target behavior, so larger versions of the same structures would add measurement cost without answering another question.
-
-## Delivery status
-
-- The current phase implements and validates both comparison groups: native Node versus WASI Wasm through the Taffy API, and Taffy Yoga versus Yoga 3.2.1 versus Taffy Yoga Wasm through the Yoga API.
-- Before publishing the benchmark page, choose the official machine and Node.js version, review the sampling settings against repeated runs, generate the complete retained result, and render that self-contained result in the website.
-- Captured application trees may be added later as ordinary scenarios when they can run the same supported public transaction across every target; they are not a prerequisite for the current comparison.
+The initial suite contains two scales of the same nested UI family, one broad wrapping collection, and initial-layout and persistent-resize transactions for a measured coding-agent chat model. Each scenario directory owns its workload and documents its exact timed boundary. The result is scenario-first: `yoga-layout` is the explicit `1.00×` reference within each table, and unrelated scenarios are never combined into an overall score.
diff --git a/benchmarks/coding-agent-chat/benchmark.ts b/benchmarks/coding-agent-chat/benchmark.ts
index 2cab8cf..d172650 100644
--- a/benchmarks/coding-agent-chat/benchmark.ts
+++ b/benchmarks/coding-agent-chat/benchmark.ts
@@ -1,164 +1,474 @@
-import type { NodeId, StyleInput } from "@taffyjs/node";
+import type { NodeId, StyleInput, TaffyTree } from "@taffyjs/node";
+import type { Config, Node } from "@taffyjs/yoga";
-import { readLayoutChecksum, type TaffyBenchmarkScenario } from "../scenario.ts";
+import {
+ createLayoutObservation,
+ readTaffyLayouts,
+ readYogaLayouts,
+ type BenchmarkScenario,
+ type LayoutObservation,
+ type TaffyApi,
+ type YogaApi,
+} from "../scenario.ts";
-type TextContext = {
+interface TextContext {
readonly characters: number;
readonly lineHeight: number;
-};
+}
+
+interface DimensionConstraint {
+ readonly mode: "exact" | "at-most" | "undefined";
+ readonly value: number;
+}
+
+interface TaffyChatFixture {
+ readonly tree: TaffyTree;
+ readonly nodes: readonly NodeId[];
+ readonly root: NodeId;
+ compute(width: number, height: number): void;
+}
+
+interface YogaChatFixture {
+ readonly config: Config;
+ readonly nodes: readonly Node[];
+ readonly root: Node;
+ compute(width: number, height: number): void;
+ dispose(): void;
+}
const sessionCount = 18;
const messageCount = 32;
+const chatNodeCount = sessionCount * 3 + 1 + messageCount * 7 + 1 + 3 + 1 + 1;
+const initialViewport = { width: 1280, height: 800 } as const;
+const resizedViewport = { width: 1024, height: 768 } as const;
+const sessionContexts = Array.from({ length: sessionCount }, (_, index) => ({
+ characters: 14 + ((index * 7) % 24),
+ lineHeight: 16,
+}));
+const messageContexts = Array.from({ length: messageCount }, (_, index) => ({
+ characters: 56 + ((index * 37) % 280),
+ lineHeight: 18,
+}));
-export const codingAgentChatScenario: TaffyBenchmarkScenario = {
- id: "coding-agent-chat-initial-layout",
- name: "Coding-agent chat: initial layout",
- question:
- "How long does a modeled coding-agent screen take to build, measure, lay out, and read?",
- description:
- "A fixed desktop chat fixture contains a session sidebar, measured labels, a message transcript, and a composer. It models a complete application layout transaction rather than an engine-only call.",
- transaction:
- "Create the public tree and JavaScript contexts, compute with the public measure callback, then read every unrounded layout snapshot.",
- parameters: {
- viewportWidth: 1280,
- viewportHeight: 800,
- sessionCount,
- messageCount,
- },
- createTransaction(api) {
- const rootStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- size: { width: 1280, height: 800 },
- };
- const sidebarStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Column,
- size: { width: 264 },
- padding: 12,
- gap: 8,
- };
- const sessionStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- size: { height: 32 },
- padding: { left: 8, right: 8 },
- gap: 6,
- };
- const mainStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Column,
- flexGrow: 1,
- minSize: { width: 0 },
- padding: 16,
- gap: 12,
- };
- const transcriptStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Column,
- flexGrow: 1,
- minSize: { height: 0 },
- gap: 12,
- };
- const messageStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- gap: 10,
- };
- const messageBodyStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Column,
- flexGrow: 1,
- minSize: { width: 0 },
- gap: 6,
- };
- const actionRowStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- gap: 6,
- size: { height: 20 },
- };
- const composerStyle: StyleInput = {
+function resolveDimension(natural: number, constraint: DimensionConstraint): number {
+ if (constraint.mode === "exact") return Math.max(0, constraint.value);
+ if (constraint.mode === "at-most") {
+ return Math.min(natural, Math.max(0, constraint.value));
+ }
+ return natural;
+}
+
+function measureText(
+ context: TextContext,
+ widthConstraint: DimensionConstraint,
+ heightConstraint: DimensionConstraint,
+): { readonly width: number; readonly height: number } {
+ const naturalWidth = Math.max(8, context.characters * 7);
+ const width = resolveDimension(naturalWidth, widthConstraint);
+ const lineCount = Math.max(1, Math.ceil(naturalWidth / Math.max(1, width)));
+ const naturalHeight = lineCount * context.lineHeight;
+ return {
+ width,
+ height: resolveDimension(naturalHeight, heightConstraint),
+ };
+}
+
+function mapTaffyConstraint(
+ api: TaffyApi,
+ knownDimension: number | undefined,
+ availableSpace: { readonly kind: number; readonly value?: number },
+): DimensionConstraint {
+ if (knownDimension !== undefined) {
+ return { mode: "exact", value: knownDimension };
+ }
+ if (availableSpace.kind === api.AvailableSpaceKind.Definite) {
+ return { mode: "at-most", value: availableSpace.value ?? 0 };
+ }
+ if (availableSpace.kind === api.AvailableSpaceKind.MinContent) {
+ return { mode: "at-most", value: 0 };
+ }
+ return { mode: "undefined", value: Number.NaN };
+}
+
+function mapYogaConstraint(api: YogaApi, value: number, mode: number): DimensionConstraint {
+ if (mode === api.MeasureMode.Exactly) return { mode: "exact", value };
+ if (mode === api.MeasureMode.AtMost) return { mode: "at-most", value };
+ return { mode: "undefined", value: Number.NaN };
+}
+
+function buildTaffyChat(api: TaffyApi): TaffyChatFixture {
+ const rootStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexShrink: 0,
+ size: initialViewport,
+ };
+ const sidebarStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Column,
+ flexShrink: 0,
+ size: { width: 264 },
+ padding: 12,
+ gap: 8,
+ };
+ const sessionStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexShrink: 0,
+ size: { height: 32 },
+ padding: { left: 8, right: 8 },
+ gap: 6,
+ };
+ const mainStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Column,
+ flexGrow: 1,
+ flexShrink: 1,
+ minSize: { width: 0 },
+ padding: 16,
+ gap: 12,
+ };
+ const transcriptStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Column,
+ flexGrow: 1,
+ flexShrink: 1,
+ minSize: { height: 0 },
+ gap: 12,
+ };
+ const messageStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexShrink: 0,
+ gap: 10,
+ };
+ const messageBodyStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Column,
+ flexGrow: 1,
+ flexShrink: 1,
+ minSize: { width: 0 },
+ gap: 6,
+ };
+ const actionRowStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexShrink: 0,
+ gap: 6,
+ size: { height: 20 },
+ };
+ const composerStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexShrink: 0,
+ size: { height: 72 },
+ padding: 12,
+ gap: 8,
+ };
+ const textStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexShrink: 1,
+ minSize: { width: 0 },
+ };
+ const tree = new api.TaffyTree();
+ tree.disableRounding();
+ const nodes: NodeId[] = [];
+ const fixedLeaf = (width: number, height: number): NodeId => {
+ const node = tree.newLeaf({
display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- size: { height: 72 },
- padding: 12,
- gap: 8,
- };
- const textStyle: StyleInput = { flexShrink: 1, minSize: { width: 0 } };
- const sessionContexts = Array.from({ length: sessionCount }, (_, index) => ({
- characters: 14 + ((index * 7) % 24),
- lineHeight: 16,
- }));
- const messageContexts = Array.from({ length: messageCount }, (_, index) => ({
- characters: 56 + ((index * 37) % 280),
- lineHeight: 18,
- }));
-
- return () => {
- const tree = new api.TaffyTree();
- const nodes: NodeId[] = [];
- const leaf = (style: StyleInput): NodeId => {
- const node = tree.newLeaf(style);
- nodes.push(node);
- return node;
- };
- const measuredLeaf = (context: TextContext): NodeId => {
- const node = tree.newLeafWithContext(textStyle, context);
- nodes.push(node);
- return node;
- };
- const parent = (style: StyleInput, children: readonly NodeId[]): NodeId => {
- const node = tree.newWithChildren(style, children);
- nodes.push(node);
- return node;
- };
-
- const sessions = sessionContexts.map((context) =>
- parent(sessionStyle, [measuredLeaf(context), leaf({ size: { width: 18, height: 18 } })]),
- );
- const sidebar = parent(sidebarStyle, sessions);
-
- const messages = messageContexts.map((context, index) => {
- const actions = parent(actionRowStyle, [
- leaf({ size: { width: 42 + (index % 3) * 8, height: 20 } }),
- leaf({ size: { width: 52, height: 20 } }),
- ]);
- const body = parent(messageBodyStyle, [measuredLeaf(context), actions]);
- return parent(messageStyle, [leaf({ size: { width: 32, height: 32 } }), body]);
- });
- const transcript = parent(transcriptStyle, messages);
- const composer = parent(composerStyle, [
- measuredLeaf({ characters: 24, lineHeight: 18 }),
- leaf({ size: { width: 72, height: 40 } }),
- ]);
- const main = parent(mainStyle, [transcript, composer]);
- const root = parent(rootStyle, [sidebar, main]);
+ flexShrink: 0,
+ size: { width, height },
+ });
+ nodes.push(node);
+ return node;
+ };
+ const measuredLeaf = (context: TextContext): NodeId => {
+ const node = tree.newLeafWithContext(textStyle, context);
+ nodes.push(node);
+ return node;
+ };
+ const parent = (style: StyleInput, children: readonly NodeId[]): NodeId => {
+ const node = tree.newWithChildren(style, children);
+ nodes.push(node);
+ return node;
+ };
+ const sessions = sessionContexts.map((context) =>
+ parent(sessionStyle, [measuredLeaf(context), fixedLeaf(18, 18)]),
+ );
+ const sidebar = parent(sidebarStyle, sessions);
+ const messages = messageContexts.map((context, index) => {
+ const actions = parent(actionRowStyle, [
+ fixedLeaf(42 + (index % 3) * 8, 20),
+ fixedLeaf(52, 20),
+ ]);
+ const body = parent(messageBodyStyle, [measuredLeaf(context), actions]);
+ return parent(messageStyle, [fixedLeaf(32, 32), body]);
+ });
+ const transcript = parent(transcriptStyle, messages);
+ const composer = parent(composerStyle, [
+ measuredLeaf({ characters: 24, lineHeight: 18 }),
+ fixedLeaf(72, 40),
+ ]);
+ const main = parent(mainStyle, [transcript, composer]);
+ const root = parent(rootStyle, [sidebar, main]);
+
+ return {
+ tree,
+ nodes,
+ root,
+ compute(width, height) {
tree.computeLayoutWithMeasure({
root,
- availableSpace: { width: 1280, height: 800 },
+ availableSpace: { width, height },
measure({ knownDimensions, availableSpace, context }) {
- const characters = context?.characters ?? 1;
- const lineHeight = context?.lineHeight ?? 16;
- const naturalWidth = Math.max(8, characters * 7);
- const widthSpace = availableSpace.width;
- let widthLimit = naturalWidth;
- if (widthSpace.kind === api.AvailableSpaceKind.Definite) {
- widthLimit = Math.max(1, widthSpace.value);
- } else if (widthSpace.kind === api.AvailableSpaceKind.MinContent) {
- widthLimit = Math.min(naturalWidth, 56);
- }
- const width = knownDimensions.width ?? Math.min(naturalWidth, widthLimit);
- const lineCount = Math.max(1, Math.ceil(naturalWidth / Math.max(1, width)));
- return {
- width,
- height: knownDimensions.height ?? lineCount * lineHeight,
- };
+ return measureText(
+ context ?? { characters: 1, lineHeight: 16 },
+ mapTaffyConstraint(api, knownDimensions.width, availableSpace.width),
+ mapTaffyConstraint(api, knownDimensions.height, availableSpace.height),
+ );
},
});
+ },
+ };
+}
+
+function buildYogaChat(api: YogaApi): YogaChatFixture {
+ const Yoga = api.default;
+ const config = Yoga.Config.create();
+ config.setPointScaleFactor(0);
+ const nodes: Node[] = [];
+ const createNode = (configure?: (node: Node) => void): Node => {
+ const node = Yoga.Node.createWithConfig(config);
+ nodes.push(node);
+ configure?.(node);
+ return node;
+ };
+ const parent = (configure: (node: Node) => void, children: readonly Node[]): Node => {
+ const node = createNode(configure);
+ for (const [index, child] of children.entries()) node.insertChild(child, index);
+ return node;
+ };
+ const fixedLeaf = (width: number, height: number): Node =>
+ createNode((node) => {
+ node.setWidth(width);
+ node.setHeight(height);
+ node.setFlexShrink(0);
+ });
+ const measuredLeaf = (context: TextContext): Node =>
+ createNode((node) => {
+ node.setFlexShrink(1);
+ node.setMinWidth(0);
+ node.setMeasureFunc((width, widthMode, height, heightMode) =>
+ measureText(
+ context,
+ mapYogaConstraint(api, width, widthMode),
+ mapYogaConstraint(api, height, heightMode),
+ ),
+ );
+ });
- return readLayoutChecksum(tree, nodes);
- };
+ const sessions = sessionContexts.map((context) =>
+ parent(
+ (node) => {
+ node.setFlexDirection(api.FlexDirection.Row);
+ node.setFlexShrink(0);
+ node.setHeight(32);
+ node.setPadding(api.Edge.Horizontal, 8);
+ node.setGap(api.Gutter.All, 6);
+ },
+ [measuredLeaf(context), fixedLeaf(18, 18)],
+ ),
+ );
+ const sidebar = parent((node) => {
+ node.setFlexShrink(0);
+ node.setWidth(264);
+ node.setPadding(api.Edge.All, 12);
+ node.setGap(api.Gutter.All, 8);
+ }, sessions);
+ const messages = messageContexts.map((context, index) => {
+ const actions = parent(
+ (node) => {
+ node.setFlexDirection(api.FlexDirection.Row);
+ node.setFlexShrink(0);
+ node.setHeight(20);
+ node.setGap(api.Gutter.All, 6);
+ },
+ [fixedLeaf(42 + (index % 3) * 8, 20), fixedLeaf(52, 20)],
+ );
+ const body = parent(
+ (node) => {
+ node.setFlexGrow(1);
+ node.setFlexShrink(1);
+ node.setMinWidth(0);
+ node.setGap(api.Gutter.All, 6);
+ },
+ [measuredLeaf(context), actions],
+ );
+ return parent(
+ (node) => {
+ node.setFlexDirection(api.FlexDirection.Row);
+ node.setFlexShrink(0);
+ node.setGap(api.Gutter.All, 10);
+ },
+ [fixedLeaf(32, 32), body],
+ );
+ });
+ const transcript = parent((node) => {
+ node.setFlexGrow(1);
+ node.setFlexShrink(1);
+ node.setMinHeight(0);
+ node.setGap(api.Gutter.All, 12);
+ }, messages);
+ const composer = parent(
+ (node) => {
+ node.setFlexDirection(api.FlexDirection.Row);
+ node.setFlexShrink(0);
+ node.setHeight(72);
+ node.setPadding(api.Edge.All, 12);
+ node.setGap(api.Gutter.All, 8);
+ },
+ [measuredLeaf({ characters: 24, lineHeight: 18 }), fixedLeaf(72, 40)],
+ );
+ const main = parent(
+ (node) => {
+ node.setFlexGrow(1);
+ node.setFlexShrink(1);
+ node.setMinWidth(0);
+ node.setPadding(api.Edge.All, 16);
+ node.setGap(api.Gutter.All, 12);
+ },
+ [transcript, composer],
+ );
+ const root = parent(
+ (node) => {
+ node.setFlexDirection(api.FlexDirection.Row);
+ node.setFlexShrink(0);
+ node.setWidth(initialViewport.width);
+ node.setHeight(initialViewport.height);
+ },
+ [sidebar, main],
+ );
+
+ return {
+ config,
+ nodes,
+ root,
+ compute(width, height) {
+ root.calculateLayout(width, height, api.Direction.LTR);
+ },
+ dispose() {
+ root.freeRecursive();
+ Yoga.Config.destroy(config);
+ },
+ };
+}
+
+function createInitialTaffyTransaction(api: TaffyApi) {
+ const observation = createLayoutObservation(chatNodeCount);
+ return {
+ run(): LayoutObservation {
+ const fixture = buildTaffyChat(api);
+ fixture.compute(initialViewport.width, initialViewport.height);
+ return readTaffyLayouts(fixture.tree, fixture.nodes, observation);
+ },
+ };
+}
+
+function createInitialYogaTransaction(api: YogaApi) {
+ const observation = createLayoutObservation(chatNodeCount);
+ return {
+ run(): LayoutObservation {
+ const fixture = buildYogaChat(api);
+ try {
+ fixture.compute(initialViewport.width, initialViewport.height);
+ return readYogaLayouts(fixture.nodes, observation);
+ } finally {
+ fixture.dispose();
+ }
+ },
+ };
+}
+
+function createResizeTaffyTransaction(api: TaffyApi) {
+ const fixture = buildTaffyChat(api);
+ const observation = createLayoutObservation(chatNodeCount);
+ const viewports = [initialViewport, resizedViewport] as const;
+ let viewportIndex = 1;
+ fixture.compute(initialViewport.width, initialViewport.height);
+ return {
+ run(): LayoutObservation {
+ const viewport = viewports[viewportIndex];
+ viewportIndex = (viewportIndex + 1) % viewports.length;
+ fixture.tree.updateStyle(fixture.root, { size: viewport });
+ fixture.compute(viewport.width, viewport.height);
+ return readTaffyLayouts(fixture.tree, fixture.nodes, observation);
+ },
+ };
+}
+
+function createResizeYogaTransaction(api: YogaApi) {
+ const fixture = buildYogaChat(api);
+ const observation = createLayoutObservation(chatNodeCount);
+ const viewports = [initialViewport, resizedViewport] as const;
+ let viewportIndex = 1;
+ fixture.compute(initialViewport.width, initialViewport.height);
+ return {
+ run(): LayoutObservation {
+ const viewport = viewports[viewportIndex];
+ viewportIndex = (viewportIndex + 1) % viewports.length;
+ fixture.root.setWidth(viewport.width);
+ fixture.root.setHeight(viewport.height);
+ fixture.compute(viewport.width, viewport.height);
+ return readYogaLayouts(fixture.nodes, observation);
+ },
+ dispose() {
+ fixture.dispose();
+ },
+ };
+}
+
+export const codingAgentChatScenarios: readonly BenchmarkScenario[] = [
+ {
+ id: "coding-agent-chat-initial-layout",
+ name: "Coding-agent chat: initial layout",
+ question:
+ "What does it cost to build, measure, lay out, read, and release a modeled coding-agent screen?",
+ description:
+ "A fixed desktop chat fixture contains a session sidebar, measured labels, a message transcript, and a composer. Text callbacks use the same intrinsic-size function and constraints for both public APIs.",
+ transaction:
+ "Create the public tree from fixed fixture data, calculate with public text-measure callbacks, read left/top/width/height for every node, and release resources when the API requires it.",
+ parameters: {
+ nodeCount: chatNodeCount,
+ measuredNodeCount: sessionCount + messageCount + 1,
+ sessionCount,
+ messageCount,
+ viewportWidth: initialViewport.width,
+ viewportHeight: initialViewport.height,
+ },
+ createTaffyTransaction: createInitialTaffyTransaction,
+ createYogaTransaction: createInitialYogaTransaction,
+ },
+ {
+ id: "coding-agent-chat-viewport-resize",
+ name: "Coding-agent chat: viewport resize",
+ question: "What does it cost to relayout an existing measured application tree after a resize?",
+ description:
+ "The same coding-agent fixture is created and initially laid out before timing. Each transaction alternates between two fixed viewport sizes, recomputes measured layout, and reads every result.",
+ transaction:
+ "Update the persistent root size through the public API, calculate layout with public text-measure callbacks, then read left/top/width/height for every node. Setup and final release are outside timing.",
+ validationRuns: 2,
+ parameters: {
+ nodeCount: chatNodeCount,
+ measuredNodeCount: sessionCount + messageCount + 1,
+ sessionCount,
+ messageCount,
+ initialViewportWidth: initialViewport.width,
+ initialViewportHeight: initialViewport.height,
+ resizedViewportWidth: resizedViewport.width,
+ resizedViewportHeight: resizedViewport.height,
+ },
+ createTaffyTransaction: createResizeTaffyTransaction,
+ createYogaTransaction: createResizeYogaTransaction,
},
-};
+];
diff --git a/benchmarks/deep-tree/benchmark.ts b/benchmarks/deep-tree/benchmark.ts
deleted file mode 100644
index 99cacfb..0000000
--- a/benchmarks/deep-tree/benchmark.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import type { NodeId, StyleInput } from "@taffyjs/node";
-
-import { readLayoutChecksum, type TaffyBenchmarkScenario } from "../scenario.ts";
-
-function createDeepTreeScenario(nodeCount: number): TaffyBenchmarkScenario {
- const leafCount = Math.floor((nodeCount + 1) / 2);
- const needsUnaryRoot = nodeCount % 2 === 0;
- const depth = Math.ceil(Math.log2(leafCount)) + 1 + (needsUnaryRoot ? 1 : 0);
-
- return {
- id: `deep-tree-${nodeCount}-nodes`,
- name: `Deep tree: ${nodeCount.toLocaleString("en-US")} nodes`,
- question: `How does the complete public transaction scale for a near-balanced hierarchy with ${depth} levels?`,
- description:
- "A deterministic hierarchy with at most two children per node alternates row and column Flexbox containers, exercising nested traversal without adding random-number generation to the measured work.",
- transaction:
- "Create all leaves and ancestors through TaffyTree, compute the layout, then read every unrounded layout snapshot.",
- parameters: {
- leafCount,
- nodeCount,
- depth,
- maximumBranchingFactor: 2,
- },
- createTransaction(api) {
- const leafStyle: StyleInput = {
- flexGrow: 1,
- size: { width: 10, height: 10 },
- };
- const containerStyles: readonly StyleInput[] = [
- {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- flexGrow: 1,
- minSize: { width: 0, height: 0 },
- padding: 1,
- gap: 1,
- },
- {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Column,
- flexGrow: 1,
- minSize: { width: 0, height: 0 },
- padding: 1,
- gap: 1,
- },
- ];
- const rootStyle: StyleInput = {
- ...containerStyles[(depth - 1) % containerStyles.length],
- size: { width: 1200, height: 800 },
- };
-
- return () => {
- const tree = new api.TaffyTree();
- const nodes: NodeId[] = [];
- let level = Array.from({ length: leafCount }, () => {
- const node = tree.newLeaf(leafStyle);
- nodes.push(node);
- return node;
- });
- let levelIndex = 0;
-
- while (level.length > 1) {
- const nextLevel: NodeId[] = [];
- const style =
- level.length === 2 && !needsUnaryRoot ? rootStyle : containerStyles[levelIndex % 2];
- for (let index = 0; index < level.length; index += 2) {
- const left = level[index];
- const right = level[index + 1];
- if (right === undefined) {
- nextLevel.push(left);
- continue;
- }
- const node = tree.newWithChildren(style, [left, right]);
- nodes.push(node);
- nextLevel.push(node);
- }
- level = nextLevel;
- levelIndex += 1;
- }
-
- const root = needsUnaryRoot ? tree.newWithChildren(rootStyle, [level[0]]) : level[0];
- if (needsUnaryRoot) {
- nodes.push(root);
- }
- tree.computeLayout({ root, availableSpace: { width: 1200, height: 800 } });
- return readLayoutChecksum(tree, nodes);
- };
- },
- };
-}
-
-export const deepTreeScenarios: readonly TaffyBenchmarkScenario[] = [createDeepTreeScenario(511)];
diff --git a/benchmarks/nested-ui/benchmark.ts b/benchmarks/nested-ui/benchmark.ts
new file mode 100644
index 0000000..72f79ec
--- /dev/null
+++ b/benchmarks/nested-ui/benchmark.ts
@@ -0,0 +1,207 @@
+import type { NodeId, StyleInput } from "@taffyjs/node";
+import type { Node } from "@taffyjs/yoga";
+
+import {
+ createLayoutObservation,
+ readTaffyLayouts,
+ readYogaLayouts,
+ type BenchmarkScenario,
+} from "../scenario.ts";
+
+interface NestedTreeShape {
+ readonly nodeCount: number;
+ readonly leafCount: number;
+ readonly depth: number;
+ readonly needsUnaryRoot: boolean;
+}
+
+function createNestedTreeShape(nodeCount: number): NestedTreeShape {
+ const leafCount = Math.floor((nodeCount + 1) / 2);
+ const needsUnaryRoot = nodeCount % 2 === 0;
+ return {
+ nodeCount,
+ leafCount,
+ depth: Math.ceil(Math.log2(leafCount)) + 1 + (needsUnaryRoot ? 1 : 0),
+ needsUnaryRoot,
+ };
+}
+
+function createNestedUiScenario(nodeCount: number, name: string): BenchmarkScenario {
+ const shape = createNestedTreeShape(nodeCount);
+ return {
+ id: `nested-ui-${nodeCount}-nodes`,
+ name,
+ question: `What does a complete ${nodeCount.toLocaleString("en-US")}-node nested layout transaction cost?`,
+ description:
+ "A deterministic near-balanced hierarchy alternates row and column Flexbox containers. It represents nested application UI while keeping the topology identical for every package and API.",
+ transaction:
+ "Create the public tree, apply styles, attach every child, calculate layout, read left/top/width/height for every node, and release resources when the API requires it.",
+ parameters: {
+ nodeCount,
+ leafCount: shape.leafCount,
+ depth: shape.depth,
+ maximumBranchingFactor: 2,
+ viewportWidth: 1200,
+ viewportHeight: 800,
+ },
+ createTaffyTransaction(api) {
+ const leafStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexGrow: 1,
+ flexShrink: 0,
+ size: { width: 10, height: 10 },
+ };
+ const containerStyles: readonly StyleInput[] = [
+ {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexGrow: 1,
+ flexShrink: 0,
+ minSize: { width: 0, height: 0 },
+ padding: 1,
+ gap: 1,
+ },
+ {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Column,
+ flexGrow: 1,
+ flexShrink: 0,
+ minSize: { width: 0, height: 0 },
+ padding: 1,
+ gap: 1,
+ },
+ ];
+ const rootStyle: StyleInput = {
+ ...containerStyles[(shape.depth - 1) % containerStyles.length],
+ size: { width: 1200, height: 800 },
+ };
+ const observation = createLayoutObservation(shape.nodeCount);
+
+ return {
+ run() {
+ const tree = new api.TaffyTree();
+ tree.disableRounding();
+ const nodes: NodeId[] = [];
+ let level = Array.from({ length: shape.leafCount }, () => {
+ const node = tree.newLeaf(leafStyle);
+ nodes.push(node);
+ return node;
+ });
+ let levelIndex = 0;
+
+ while (level.length > 1) {
+ const nextLevel: NodeId[] = [];
+ const style =
+ level.length === 2 && !shape.needsUnaryRoot
+ ? rootStyle
+ : containerStyles[levelIndex % containerStyles.length];
+ for (let index = 0; index < level.length; index += 2) {
+ const left = level[index];
+ const right = level[index + 1];
+ if (right === undefined) {
+ nextLevel.push(left);
+ continue;
+ }
+ const node = tree.newWithChildren(style, [left, right]);
+ nodes.push(node);
+ nextLevel.push(node);
+ }
+ level = nextLevel;
+ levelIndex += 1;
+ }
+
+ const root = shape.needsUnaryRoot
+ ? tree.newWithChildren(rootStyle, [level[0]])
+ : level[0];
+ if (shape.needsUnaryRoot) nodes.push(root);
+ tree.computeLayout({ root, availableSpace: { width: 1200, height: 800 } });
+ return readTaffyLayouts(tree, nodes, observation);
+ },
+ };
+ },
+ createYogaTransaction(api) {
+ const observation = createLayoutObservation(shape.nodeCount);
+ return {
+ run() {
+ const Yoga = api.default;
+ const config = Yoga.Config.create();
+ config.setPointScaleFactor(0);
+ const nodes: Node[] = [];
+ let level = Array.from({ length: shape.leafCount }, () => {
+ const node = Yoga.Node.createWithConfig(config);
+ nodes.push(node);
+ node.setWidth(10);
+ node.setHeight(10);
+ node.setFlexGrow(1);
+ node.setFlexShrink(0);
+ return node;
+ });
+ let levelIndex = 0;
+
+ while (level.length > 1) {
+ const nextLevel: Node[] = [];
+ const isRootLevel = level.length === 2 && !shape.needsUnaryRoot;
+ const styleIndex = isRootLevel ? shape.depth - 1 : levelIndex;
+ for (let index = 0; index < level.length; index += 2) {
+ const left = level[index];
+ const right = level[index + 1];
+ if (right === undefined) {
+ nextLevel.push(left);
+ continue;
+ }
+ const node = Yoga.Node.createWithConfig(config);
+ nodes.push(node);
+ configureYogaContainer(api, node, styleIndex);
+ if (isRootLevel) {
+ node.setWidth(1200);
+ node.setHeight(800);
+ }
+ node.insertChild(left, 0);
+ node.insertChild(right, 1);
+ nextLevel.push(node);
+ }
+ level = nextLevel;
+ levelIndex += 1;
+ }
+
+ let root = level[0];
+ if (shape.needsUnaryRoot) {
+ root = Yoga.Node.createWithConfig(config);
+ nodes.push(root);
+ configureYogaContainer(api, root, shape.depth - 1);
+ root.setWidth(1200);
+ root.setHeight(800);
+ root.insertChild(level[0], 0);
+ }
+
+ try {
+ root.calculateLayout(1200, 800, api.Direction.LTR);
+ return readYogaLayouts(nodes, observation);
+ } finally {
+ root.freeRecursive();
+ Yoga.Config.destroy(config);
+ }
+ },
+ };
+ },
+ };
+}
+
+function configureYogaContainer(
+ api: Parameters[0],
+ node: Node,
+ levelIndex: number,
+): void {
+ node.setFlexDirection(levelIndex % 2 === 0 ? api.FlexDirection.Row : api.FlexDirection.Column);
+ node.setFlexGrow(1);
+ node.setFlexShrink(0);
+ node.setMinWidth(0);
+ node.setMinHeight(0);
+ node.setPadding(api.Edge.All, 1);
+ node.setGap(api.Gutter.All, 1);
+}
+
+export const nestedUiScenarios: readonly BenchmarkScenario[] = [
+ createNestedUiScenario(50, "Small nested UI: 50 nodes"),
+ createNestedUiScenario(500, "Nested UI: 500 nodes"),
+];
diff --git a/benchmarks/run.ts b/benchmarks/run.ts
index ca0efb2..6c56e94 100644
--- a/benchmarks/run.ts
+++ b/benchmarks/run.ts
@@ -6,18 +6,24 @@ import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import type {
- BenchmarkComparisonGroup,
BenchmarkProfile,
BenchmarkScenarioMetadata,
BenchmarkTarget,
BenchmarkWorkerResult,
SampledBenchmarkResult,
} from "./scenario.ts";
-import { benchmarkComparisonGroups, benchmarkProfiles } from "./suite.ts";
+import {
+ benchmarkBaselineTargetId,
+ benchmarkProfiles,
+ benchmarkScenarios,
+ benchmarkTargets,
+} from "./suite.ts";
const benchmarkDirectory = dirname(fileURLToPath(import.meta.url));
const repositoryDirectory = resolve(benchmarkDirectory, "..");
const workerPath = resolve(benchmarkDirectory, "worker.ts");
+const layoutValueNames = ["left", "top", "width", "height"] as const;
+const layoutTolerance = 1e-3;
const arguments_ = process.argv.slice(2);
const requestedScenarioIds: string[] = [];
@@ -35,16 +41,16 @@ if (updateWebsite && requestedScenarioIds.length > 0) {
throw new Error("benchmark:update-website requires the complete scenario suite");
}
const requestedScenarioSet = new Set(requestedScenarioIds);
-const knownScenarioIds = new Set();
-for (const group of benchmarkComparisonGroups) {
- for (const scenario of group.scenarios) knownScenarioIds.add(scenario.id);
-}
+const knownScenarioIds = new Set(benchmarkScenarios.map(({ id }) => id));
for (const requestedScenarioId of requestedScenarioSet) {
assert.ok(
knownScenarioIds.has(requestedScenarioId),
`Unknown benchmark scenario ${requestedScenarioId}`,
);
}
+const selectedScenarios = benchmarkScenarios.filter(
+ ({ id }) => requestedScenarioSet.size === 0 || requestedScenarioSet.has(id),
+);
const profileId = updateWebsite ? "publication" : "local";
const profile = benchmarkProfiles.find(({ id }) => id === profileId);
assert.ok(profile, `Missing benchmark profile ${profileId}`);
@@ -57,14 +63,13 @@ function repositoryOutput(args: readonly string[]): string {
}
function runWorker(
- group: BenchmarkComparisonGroup,
target: BenchmarkTarget,
scenario: BenchmarkScenarioMetadata,
profile: BenchmarkProfile,
): BenchmarkWorkerResult {
const output = execFileSync(
process.execPath,
- ["--expose-gc", workerPath, group.id, target.id, scenario.id, profile.id],
+ ["--expose-gc", workerPath, target.id, scenario.id, profile.id],
{
cwd: benchmarkDirectory,
encoding: "utf8",
@@ -75,18 +80,25 @@ function runWorker(
}
function assertWorkerResult(
- group: BenchmarkComparisonGroup,
target: BenchmarkTarget,
scenario: BenchmarkScenarioMetadata,
worker: BenchmarkWorkerResult,
): void {
- assert.equal(worker.groupId, group.id, `${scenario.id} returned the wrong comparison group`);
assert.equal(worker.targetId, target.id, `${scenario.id} returned the wrong target`);
assert.equal(worker.scenarioId, scenario.id, `${target.id} returned the wrong scenario`);
- assert.ok(
- Number.isFinite(worker.checksum),
- `${scenario.id}/${target.id} returned a non-finite checksum`,
- );
+ assert.ok(worker.observations.length > 0, `${scenario.id}/${target.id} returned no observations`);
+ for (const [runIndex, observation] of worker.observations.entries()) {
+ assert.ok(
+ observation.length > 0 && observation.length % 4 === 0,
+ `${scenario.id}/${target.id} validation run ${runIndex + 1} returned malformed layout data`,
+ );
+ for (const value of observation) {
+ assert.ok(
+ Number.isFinite(value),
+ `${scenario.id}/${target.id} validation run ${runIndex + 1} returned an invalid layout value`,
+ );
+ }
+ }
assert.ok(worker.result.sampleCount > 0, `${scenario.id}/${target.id} produced no samples`);
assert.equal(
worker.result.sampleCount,
@@ -105,18 +117,34 @@ function assertWorkerResult(
}
}
-function assertEquivalentChecksums(
+function assertEquivalentObservations(
scenario: BenchmarkScenarioMetadata,
workers: readonly BenchmarkWorkerResult[],
): void {
- const expected = workers[0]?.checksum;
- assert.notEqual(expected, undefined, `${scenario.id} produced no target results`);
- for (const worker of workers.slice(1)) {
+ const baseline = workers.find(({ targetId }) => targetId === benchmarkBaselineTargetId);
+ assert.ok(baseline, `${scenario.id} is missing ${benchmarkBaselineTargetId} validation output`);
+
+ for (const worker of workers) {
assert.equal(
- worker.checksum,
- expected,
- `${scenario.id}/${worker.targetId} produced ${worker.checksum}, expected ${expected}`,
+ worker.observations.length,
+ baseline.observations.length,
+ `${scenario.id}/${worker.targetId} returned the wrong validation run count`,
);
+ for (const [runIndex, actual] of worker.observations.entries()) {
+ const expected: readonly number[] = baseline.observations[runIndex];
+ assert.equal(
+ actual.length,
+ expected.length,
+ `${scenario.id}/${worker.targetId} returned the wrong layout value count`,
+ );
+ for (let valueIndex = 0; valueIndex < expected.length; valueIndex += 1) {
+ const difference = Math.abs(actual[valueIndex] - expected[valueIndex]);
+ assert.ok(
+ difference <= layoutTolerance,
+ `${scenario.id}/${worker.targetId} validation run ${runIndex + 1}, node ${Math.floor(valueIndex / 4)}, ${layoutValueNames[valueIndex % 4]}=${actual[valueIndex]}, expected ${expected[valueIndex]}`,
+ );
+ }
+ }
}
}
@@ -173,24 +201,28 @@ function assertPublicationStability(
}
function printScenario(
- group: BenchmarkComparisonGroup,
scenario: BenchmarkScenarioMetadata,
results: readonly ReturnType[],
): void {
- const baselineHz = results[0]?.hz;
- assert.ok(baselineHz, `${scenario.id} is missing the baseline result`);
- console.log(`\n${group.name} · ${scenario.name}\n${scenario.question}`);
+ const baseline = results.find(({ targetId }) => targetId === benchmarkBaselineTargetId);
+ assert.ok(baseline, `${scenario.id} is missing the baseline result`);
+ console.log(`\n${scenario.name}\n${scenario.question}`);
console.table(
- results.map((result) => ({
- target: result.packageName,
- "ops/s": Math.round(result.hz).toLocaleString("en-US"),
- "mean (ms)": result.meanMs.toFixed(4),
- "median (ms)": result.medianMs.toFixed(4),
- relative: `${(result.hz / baselineHz).toFixed(2)}x`,
- rounds: result.roundCount,
- samples: result.sampleCount,
- "max rme": `${result.maxRelativeMarginOfError.toFixed(2)}%`,
- })),
+ results.map((result) => {
+ const target = benchmarkTargets.find(({ id }) => id === result.targetId);
+ assert.ok(target, `Unknown target ${result.targetId}`);
+ return {
+ package: result.packageName,
+ API: target.apiLabel,
+ runtime: target.runtimeLabel,
+ "ops/s": Math.round(result.hz).toLocaleString("en-US"),
+ "median (ms)": result.medianMs.toFixed(4),
+ "vs yoga-layout": `${(result.hz / baseline.hz).toFixed(2)}x`,
+ rounds: result.roundCount,
+ samples: result.sampleCount,
+ "max rme": `${result.maxRelativeMarginOfError.toFixed(2)}%`,
+ };
+ }),
);
}
@@ -202,55 +234,40 @@ if (updateWebsite && source.dirty) {
throw new Error("benchmark:update-website requires a clean worktree");
}
-const comparisonGroupResults = [];
-for (const group of benchmarkComparisonGroups) {
- const selectedScenarios = group.scenarios.filter(
- ({ id }) => requestedScenarioSet.size === 0 || requestedScenarioSet.has(id),
- );
- if (selectedScenarios.length === 0) continue;
-
- const scenarioResults = [];
- for (const scenario of selectedScenarios) {
- const workers: BenchmarkWorkerResult[] = [];
- for (let round = 0; round < profile.rounds; round += 1) {
- const targets = round % 2 === 0 ? group.targets : [...group.targets].reverse();
- for (const target of targets) {
- const worker = runWorker(group, target, scenario, profile);
- assertWorkerResult(group, target, scenario, worker);
- workers.push(worker);
- }
+const scenarioResults = [];
+for (const scenario of selectedScenarios) {
+ const workers: BenchmarkWorkerResult[] = [];
+ for (let round = 0; round < profile.rounds; round += 1) {
+ const targets = round % 2 === 0 ? benchmarkTargets : [...benchmarkTargets].reverse();
+ for (const target of targets) {
+ const worker = runWorker(target, scenario, profile);
+ assertWorkerResult(target, scenario, worker);
+ workers.push(worker);
}
- assertEquivalentChecksums(scenario, workers);
- const results = group.targets.map((target) => {
- const rounds = workers
- .filter(({ targetId }) => targetId === target.id)
- .map(({ result }) => result);
- assert.equal(rounds.length, profile.rounds, `${scenario.id}/${target.id} missed a round`);
- assertPublicationStability(scenario, target, profile, rounds);
- return summarizeTarget(target, rounds);
- });
- printScenario(group, scenario, results);
- scenarioResults.push({
- id: scenario.id,
- name: scenario.name,
- question: scenario.question,
- description: scenario.description,
- transaction: scenario.transaction,
- parameters: scenario.parameters,
- results,
- });
}
-
- comparisonGroupResults.push({
- id: group.id,
- name: group.name,
- targets: group.targets.map(({ id, label, packageName }) => ({ id, label, packageName })),
- scenarios: scenarioResults,
+ assertEquivalentObservations(scenario, workers);
+ const results = benchmarkTargets.map((target) => {
+ const rounds = workers
+ .filter(({ targetId }) => target.id === targetId)
+ .map(({ result }) => result);
+ assert.equal(rounds.length, profile.rounds, `${scenario.id}/${target.id} missed a round`);
+ assertPublicationStability(scenario, target, profile, rounds);
+ return summarizeTarget(target, rounds);
+ });
+ printScenario(scenario, results);
+ scenarioResults.push({
+ id: scenario.id,
+ name: scenario.name,
+ question: scenario.question,
+ description: scenario.description,
+ transaction: scenario.transaction,
+ parameters: scenario.parameters,
+ results,
});
}
const report = {
- schemaVersion: 1,
+ schemaVersion: 2,
generatedAt: new Date().toISOString(),
source,
environment: {
@@ -261,7 +278,9 @@ const report = {
cpu: cpus()[0]?.model ?? "unknown",
},
profile,
- comparisonGroups: comparisonGroupResults,
+ baselineTargetId: benchmarkBaselineTargetId,
+ targets: benchmarkTargets,
+ scenarios: scenarioResults,
};
const outputPath = updateWebsite
diff --git a/benchmarks/scenario.ts b/benchmarks/scenario.ts
index 1e83327..a372259 100644
--- a/benchmarks/scenario.ts
+++ b/benchmarks/scenario.ts
@@ -13,36 +13,29 @@ export interface BenchmarkScenarioMetadata {
readonly parameters: Readonly>;
}
-export interface BenchmarkScenario extends BenchmarkScenarioMetadata {
- createTransaction(api: TApi): () => number;
-}
-
-export type TaffyBenchmarkScenario = BenchmarkScenario;
-export type YogaBenchmarkScenario = BenchmarkScenario;
+export type LayoutObservation = Float64Array;
-export interface BenchmarkTarget {
- readonly id: string;
- readonly label: string;
- readonly packageName: string;
+export interface BenchmarkTransaction {
+ run(): LayoutObservation;
+ dispose?(): void;
}
-interface BenchmarkComparisonGroupBase {
- readonly name: string;
- readonly targets: readonly BenchmarkTarget[];
+export interface BenchmarkScenario extends BenchmarkScenarioMetadata {
+ readonly validationRuns?: number;
+ createTaffyTransaction(api: TaffyApi): BenchmarkTransaction;
+ createYogaTransaction(api: YogaApi): BenchmarkTransaction;
}
-export interface TaffyBenchmarkComparisonGroup extends BenchmarkComparisonGroupBase {
- readonly id: "taffy-api";
- readonly scenarios: readonly TaffyBenchmarkScenario[];
-}
+export type BenchmarkApiKind = "taffy" | "yoga";
-export interface YogaBenchmarkComparisonGroup extends BenchmarkComparisonGroupBase {
- readonly id: "yoga-api";
- readonly scenarios: readonly YogaBenchmarkScenario[];
+export interface BenchmarkTarget {
+ readonly id: string;
+ readonly packageName: string;
+ readonly apiKind: BenchmarkApiKind;
+ readonly apiLabel: string;
+ readonly runtimeLabel: string;
}
-export type BenchmarkComparisonGroup = TaffyBenchmarkComparisonGroup | YogaBenchmarkComparisonGroup;
-
export interface SampledBenchmarkResult {
readonly hz: number;
readonly meanMs: number;
@@ -57,10 +50,9 @@ export interface SampledBenchmarkResult {
}
export interface BenchmarkWorkerResult {
- readonly groupId: BenchmarkComparisonGroup["id"];
readonly targetId: string;
readonly scenarioId: string;
- readonly checksum: number;
+ readonly observations: readonly (readonly number[])[];
readonly result: SampledBenchmarkResult;
}
@@ -77,64 +69,48 @@ export interface BenchmarkProfile {
readonly maxRoundMedianSpread: number | null;
}
-export function readLayoutChecksum(
+export function createLayoutObservation(nodeCount: number): LayoutObservation {
+ return new Float64Array(nodeCount * 4);
+}
+
+export function readTaffyLayouts(
tree: TaffyTree,
nodes: readonly NodeId[],
-): number {
- let checksum = tree.getNodeCount() * 17;
-
+ observation: LayoutObservation,
+): LayoutObservation {
+ assertObservationSize(nodes.length, observation);
for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex += 1) {
const layout = tree.getUnroundedLayout(nodes[nodeIndex]);
- const values = [
- layout.order,
- layout.location.x,
- layout.location.y,
- layout.size.width,
- layout.size.height,
- layout.contentSize.width,
- layout.contentSize.height,
- layout.scrollbarSize.width,
- layout.scrollbarSize.height,
- layout.border.left,
- layout.border.right,
- layout.border.top,
- layout.border.bottom,
- layout.padding.left,
- layout.padding.right,
- layout.padding.top,
- layout.padding.bottom,
- layout.margin.left,
- layout.margin.right,
- layout.margin.top,
- layout.margin.bottom,
- ];
-
- for (let valueIndex = 0; valueIndex < values.length; valueIndex += 1) {
- checksum += values[valueIndex] * (nodeIndex + 1) * (valueIndex + 1);
- }
+ const offset = nodeIndex * 4;
+ observation[offset] = layout.location.x;
+ observation[offset + 1] = layout.location.y;
+ observation[offset + 2] = layout.size.width;
+ observation[offset + 3] = layout.size.height;
}
-
- return checksum;
+ return observation;
}
-export function readYogaLayoutChecksum(nodes: readonly YogaNode[]): number {
- let checksum = nodes.length * 17;
-
+export function readYogaLayouts(
+ nodes: readonly YogaNode[],
+ observation: LayoutObservation,
+): LayoutObservation {
+ assertObservationSize(nodes.length, observation);
for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex += 1) {
const layout = nodes[nodeIndex].getComputedLayout();
- const values = [
- layout.left,
- layout.right,
- layout.top,
- layout.bottom,
- layout.width,
- layout.height,
- ];
-
- for (let valueIndex = 0; valueIndex < values.length; valueIndex += 1) {
- checksum += values[valueIndex] * (nodeIndex + 1) * (valueIndex + 1);
- }
+ const offset = nodeIndex * 4;
+ observation[offset] = layout.left;
+ observation[offset + 1] = layout.top;
+ observation[offset + 2] = layout.width;
+ observation[offset + 3] = layout.height;
}
+ return observation;
+}
- return checksum;
+function assertObservationSize(nodeCount: number, observation: LayoutObservation): void {
+ const expectedLength = nodeCount * 4;
+ if (observation.length !== expectedLength) {
+ throw new Error(
+ `Layout observation has ${observation.length} values, expected ${expectedLength}`,
+ );
+ }
}
diff --git a/benchmarks/suite.ts b/benchmarks/suite.ts
index fcd809b..e4395a9 100644
--- a/benchmarks/suite.ts
+++ b/benchmarks/suite.ts
@@ -1,15 +1,7 @@
-import { codingAgentChatScenario } from "./coding-agent-chat/benchmark.ts";
-import { deepTreeScenarios } from "./deep-tree/benchmark.ts";
-import type {
- BenchmarkComparisonGroup,
- BenchmarkProfile,
- TaffyBenchmarkComparisonGroup,
- YogaBenchmarkComparisonGroup,
-} from "./scenario.ts";
-import { wideTreeScenarios } from "./wide-tree/benchmark.ts";
-import { yogaCodingAgentChatScenario } from "./yoga-coding-agent-chat/benchmark.ts";
-import { yogaDeepTreeScenarios } from "./yoga-deep-tree/benchmark.ts";
-import { yogaWideTreeScenarios } from "./yoga-wide-tree/benchmark.ts";
+import { codingAgentChatScenarios } from "./coding-agent-chat/benchmark.ts";
+import { nestedUiScenarios } from "./nested-ui/benchmark.ts";
+import type { BenchmarkProfile, BenchmarkScenario, BenchmarkTarget } from "./scenario.ts";
+import { wideWrappingCollectionScenario } from "./wide-wrapping-collection/benchmark.ts";
export const benchmarkProfiles: readonly BenchmarkProfile[] = [
{
@@ -38,48 +30,48 @@ export const benchmarkProfiles: readonly BenchmarkProfile[] = [
},
];
-export const taffyComparisonGroup: TaffyBenchmarkComparisonGroup = {
- id: "taffy-api",
- name: "Taffy API",
- scenarios: [codingAgentChatScenario, ...wideTreeScenarios, ...deepTreeScenarios],
- targets: [
- {
- id: "node",
- label: "Native Node",
- packageName: "@taffyjs/node",
- },
- {
- id: "wasm",
- label: "WASI Wasm",
- packageName: "@taffyjs/wasm",
- },
- ],
-};
+export const benchmarkTargets: readonly BenchmarkTarget[] = [
+ {
+ id: "node",
+ packageName: "@taffyjs/node",
+ apiKind: "taffy",
+ apiLabel: "TaffyTree",
+ runtimeLabel: "Native Node-API",
+ },
+ {
+ id: "wasm",
+ packageName: "@taffyjs/wasm",
+ apiKind: "taffy",
+ apiLabel: "TaffyTree",
+ runtimeLabel: "WASI Wasm",
+ },
+ {
+ id: "taffy-yoga",
+ packageName: "@taffyjs/yoga",
+ apiKind: "yoga",
+ apiLabel: "Yoga Node",
+ runtimeLabel: "Native Taffy",
+ },
+ {
+ id: "taffy-yoga-wasm",
+ packageName: "@taffyjs/yoga-wasm",
+ apiKind: "yoga",
+ apiLabel: "Yoga Node",
+ runtimeLabel: "WASI Taffy",
+ },
+ {
+ id: "yoga-layout",
+ packageName: "yoga-layout",
+ apiKind: "yoga",
+ apiLabel: "Yoga Node",
+ runtimeLabel: "Yoga Wasm",
+ },
+];
-export const yogaComparisonGroup: YogaBenchmarkComparisonGroup = {
- id: "yoga-api",
- name: "Yoga API",
- scenarios: [yogaCodingAgentChatScenario, ...yogaWideTreeScenarios, ...yogaDeepTreeScenarios],
- targets: [
- {
- id: "taffy-yoga",
- label: "Taffy Yoga",
- packageName: "@taffyjs/yoga",
- },
- {
- id: "yoga-layout",
- label: "Yoga 3.2.1",
- packageName: "yoga-layout",
- },
- {
- id: "taffy-yoga-wasm",
- label: "Taffy Yoga Wasm",
- packageName: "@taffyjs/yoga-wasm",
- },
- ],
-};
+export const benchmarkBaselineTargetId = "yoga-layout";
-export const benchmarkComparisonGroups: readonly BenchmarkComparisonGroup[] = [
- taffyComparisonGroup,
- yogaComparisonGroup,
+export const benchmarkScenarios: readonly BenchmarkScenario[] = [
+ ...nestedUiScenarios,
+ wideWrappingCollectionScenario,
+ ...codingAgentChatScenarios,
];
diff --git a/benchmarks/wide-tree/benchmark.ts b/benchmarks/wide-tree/benchmark.ts
deleted file mode 100644
index d5bc4dd..0000000
--- a/benchmarks/wide-tree/benchmark.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import type { NodeId, StyleInput } from "@taffyjs/node";
-
-import { readLayoutChecksum, type TaffyBenchmarkScenario } from "../scenario.ts";
-
-function createWideTreeScenario(leafCount: number): TaffyBenchmarkScenario {
- return {
- id: `wide-tree-${leafCount}-leaves`,
- name: `Wide tree: ${leafCount.toLocaleString("en-US")} leaves`,
- question: `How does the complete public transaction scale for a shallow root with ${leafCount.toLocaleString("en-US")} children?`,
- description:
- "A two-level wrapping Flexbox tree stresses broad child lists and repeated public style conversion without introducing random fixture generation.",
- transaction:
- "Create every leaf and the root through TaffyTree, compute the layout, then read every unrounded layout snapshot.",
- parameters: {
- leafCount,
- nodeCount: leafCount + 1,
- depth: 2,
- },
- createTransaction(api) {
- const rootStyle: StyleInput = {
- display: api.Display.Flex,
- flexDirection: api.FlexDirection.Row,
- flexWrap: api.FlexWrap.Wrap,
- size: { width: 1200 },
- padding: 4,
- gap: 2,
- };
- const leafStyles: readonly StyleInput[] = [
- { size: { width: 40, height: 16 }, flexGrow: 1 },
- { size: { width: 52, height: 18 }, flexGrow: 1 },
- { size: { width: 64, height: 20 }, flexGrow: 1 },
- { size: { width: 76, height: 22 }, flexGrow: 1 },
- ];
-
- return () => {
- const tree = new api.TaffyTree();
- const nodes: NodeId[] = [];
- const children = Array.from({ length: leafCount }, (_, index) => {
- const node = tree.newLeaf(leafStyles[index % leafStyles.length]);
- nodes.push(node);
- return node;
- });
- const root = tree.newWithChildren(rootStyle, children);
- nodes.push(root);
- tree.computeLayout({
- root,
- availableSpace: { width: 1200, height: api.AvailableSpace.MaxContent },
- });
- return readLayoutChecksum(tree, nodes);
- };
- },
- };
-}
-
-export const wideTreeScenarios: readonly TaffyBenchmarkScenario[] = [createWideTreeScenario(1_000)];
diff --git a/benchmarks/wide-wrapping-collection/benchmark.ts b/benchmarks/wide-wrapping-collection/benchmark.ts
new file mode 100644
index 0000000..61cd3c4
--- /dev/null
+++ b/benchmarks/wide-wrapping-collection/benchmark.ts
@@ -0,0 +1,99 @@
+import type { NodeId, StyleInput } from "@taffyjs/node";
+import type { Node } from "@taffyjs/yoga";
+
+import {
+ createLayoutObservation,
+ readTaffyLayouts,
+ readYogaLayouts,
+ type BenchmarkScenario,
+} from "../scenario.ts";
+
+const itemCount = 500;
+const itemWidths = [40, 52, 64, 76] as const;
+
+export const wideWrappingCollectionScenario: BenchmarkScenario = {
+ id: "wide-wrapping-collection-500-items",
+ name: "Wide wrapping collection: 500 items",
+ question: "What does a complete layout transaction cost for one broad wrapping collection?",
+ description:
+ "A two-level Flexbox collection exercises broad child lists, wrapping, repeated style conversion, child attachment, layout reads, and resource release without random fixture generation.",
+ transaction:
+ "Create the public root and 500 items, apply styles, attach every item, calculate layout, read left/top/width/height for every node, and release resources when the API requires it.",
+ parameters: {
+ itemCount,
+ nodeCount: itemCount + 1,
+ depth: 2,
+ viewportWidth: 1200,
+ },
+ createTaffyTransaction(api) {
+ const rootStyle: StyleInput = {
+ display: api.Display.Flex,
+ flexDirection: api.FlexDirection.Row,
+ flexWrap: api.FlexWrap.Wrap,
+ flexShrink: 0,
+ size: { width: 1200 },
+ padding: 4,
+ gap: 2,
+ };
+ const itemStyles: readonly StyleInput[] = itemWidths.map((width, index) => ({
+ display: api.Display.Flex,
+ flexGrow: 1,
+ flexShrink: 0,
+ size: { width, height: 16 + index * 2 },
+ }));
+ const observation = createLayoutObservation(itemCount + 1);
+
+ return {
+ run() {
+ const tree = new api.TaffyTree();
+ tree.disableRounding();
+ const items = Array.from({ length: itemCount }, (_, index) =>
+ tree.newLeaf(itemStyles[index % itemStyles.length]),
+ );
+ const root = tree.newWithChildren(rootStyle, items);
+ const nodes: readonly NodeId[] = [root, ...items];
+ tree.computeLayout({
+ root,
+ availableSpace: { width: 1200, height: api.AvailableSpace.MaxContent },
+ });
+ return readTaffyLayouts(tree, nodes, observation);
+ },
+ };
+ },
+ createYogaTransaction(api) {
+ const observation = createLayoutObservation(itemCount + 1);
+ return {
+ run() {
+ const Yoga = api.default;
+ const config = Yoga.Config.create();
+ config.setPointScaleFactor(0);
+ const root = Yoga.Node.createWithConfig(config);
+ const nodes: Node[] = [root];
+ root.setFlexDirection(api.FlexDirection.Row);
+ root.setFlexWrap(api.Wrap.Wrap);
+ root.setFlexShrink(0);
+ root.setWidth(1200);
+ root.setPadding(api.Edge.All, 4);
+ root.setGap(api.Gutter.All, 2);
+
+ for (let index = 0; index < itemCount; index += 1) {
+ const item = Yoga.Node.createWithConfig(config);
+ nodes.push(item);
+ item.setWidth(itemWidths[index % itemWidths.length]);
+ item.setHeight(16 + (index % itemWidths.length) * 2);
+ item.setFlexGrow(1);
+ item.setFlexShrink(0);
+ root.insertChild(item, index);
+ }
+
+ try {
+ root.calculateLayout(1200, undefined, api.Direction.LTR);
+ return readYogaLayouts(nodes, observation);
+ } finally {
+ root.freeRecursive();
+ Yoga.Config.destroy(config);
+ }
+ },
+ };
+ },
+};
diff --git a/benchmarks/worker.ts b/benchmarks/worker.ts
index 4ffad6a..f383d2f 100644
--- a/benchmarks/worker.ts
+++ b/benchmarks/worker.ts
@@ -3,58 +3,71 @@ import assert from "node:assert/strict";
import { Bench } from "tinybench";
import type {
- BenchmarkScenarioMetadata,
+ BenchmarkScenario,
+ BenchmarkTransaction,
BenchmarkWorkerResult,
TaffyApi,
YogaApi,
} from "./scenario.ts";
-import { benchmarkComparisonGroups, benchmarkProfiles } from "./suite.ts";
+import { benchmarkProfiles, benchmarkScenarios, benchmarkTargets } from "./suite.ts";
-const [groupId, targetId, scenarioId, profileId] = process.argv.slice(2);
-const group = benchmarkComparisonGroups.find(({ id }) => id === groupId);
+const [targetId, scenarioId, profileId] = process.argv.slice(2);
+const target = benchmarkTargets.find(({ id }) => id === targetId);
+const scenario = benchmarkScenarios.find(({ id }) => id === scenarioId);
const profile = benchmarkProfiles.find(({ id }) => id === profileId);
-assert.ok(group, `Unknown benchmark comparison group ${groupId ?? ""}`);
-const target = group.targets.find(({ id }) => id === targetId);
assert.ok(target, `Unknown benchmark target ${targetId ?? ""}`);
+assert.ok(scenario, `Unknown benchmark scenario ${scenarioId ?? ""}`);
assert.ok(profile, `Unknown benchmark profile ${profileId ?? ""}`);
const importedApi: unknown = await import(target.packageName);
-let scenario: BenchmarkScenarioMetadata;
-let createTransaction: () => () => number;
-if (group.id === "taffy-api") {
- const typedScenario = group.scenarios.find(({ id }) => id === scenarioId);
- assert.ok(typedScenario, `Unknown benchmark scenario ${scenarioId ?? ""}`);
- const api = importedApi as TaffyApi;
- scenario = typedScenario;
- createTransaction = () => typedScenario.createTransaction(api);
-} else {
- const typedScenario = group.scenarios.find(({ id }) => id === scenarioId);
- assert.ok(typedScenario, `Unknown benchmark scenario ${scenarioId ?? ""}`);
- const api = importedApi as YogaApi;
- scenario = typedScenario;
- createTransaction = () => typedScenario.createTransaction(api);
+const targetApiKind = target.apiKind;
+
+function createTransaction(scenario: BenchmarkScenario): BenchmarkTransaction {
+ if (targetApiKind === "taffy") {
+ return scenario.createTaffyTransaction(importedApi as TaffyApi);
+ }
+ return scenario.createYogaTransaction(importedApi as YogaApi);
}
-const checksum = createTransaction()();
-assert.ok(Number.isFinite(checksum), `${scenario.id}/${target.id} returned a non-finite checksum`);
+const validationTransaction = createTransaction(scenario);
+const observations: number[][] = [];
+try {
+ const validationRuns = scenario.validationRuns ?? 1;
+ for (let run = 0; run < validationRuns; run += 1) {
+ const observation = Array.from(validationTransaction.run());
+ assert.ok(observation.length > 0, `${scenario.id}/${target.id} returned no layout values`);
+ assert.ok(
+ observation.every(Number.isFinite),
+ `${scenario.id}/${target.id} returned a non-finite layout value`,
+ );
+ observations.push(observation);
+ }
+} finally {
+ validationTransaction.dispose?.();
+}
-const transaction = createTransaction();
+const transaction = createTransaction(scenario);
const bench = new Bench({ ...profile.settings, throws: true });
let blackhole = 0;
bench.add(target.id, () => {
- blackhole = transaction();
+ const observation = transaction.run();
+ blackhole = observation[0] + observation[observation.length - 1] + observation.length;
});
-await bench.warmup();
-const garbageCollector = (
- globalThis as typeof globalThis & {
- gc?: () => void;
- }
-).gc;
-assert.ok(garbageCollector, "Benchmark workers require --expose-gc");
-garbageCollector();
-await bench.run();
-assert.ok(Number.isFinite(blackhole), `${scenario.id}/${target.id} produced a non-finite checksum`);
+try {
+ await bench.warmup();
+ const garbageCollector = (
+ globalThis as typeof globalThis & {
+ gc?: () => void;
+ }
+ ).gc;
+ assert.ok(garbageCollector, "Benchmark workers require --expose-gc");
+ garbageCollector();
+ await bench.run();
+} finally {
+ transaction.dispose?.();
+}
+assert.ok(Number.isFinite(blackhole), `${scenario.id}/${target.id} produced invalid output`);
const task = bench.tasks[0];
assert.ok(task?.result, `${scenario.id}/${target.id} did not produce a result`);
@@ -68,10 +81,9 @@ const medianMs =
? (sortedSamples[middle - 1] + sortedSamples[middle]) / 2
: sortedSamples[middle];
const output: BenchmarkWorkerResult = {
- groupId: group.id,
targetId: target.id,
scenarioId: scenario.id,
- checksum,
+ observations,
result: {
hz: task.result.hz,
meanMs: task.result.mean,
diff --git a/benchmarks/yoga-coding-agent-chat/benchmark.ts b/benchmarks/yoga-coding-agent-chat/benchmark.ts
deleted file mode 100644
index bd4fa82..0000000
--- a/benchmarks/yoga-coding-agent-chat/benchmark.ts
+++ /dev/null
@@ -1,153 +0,0 @@
-import type { Node } from "@taffyjs/yoga";
-
-import { readYogaLayoutChecksum, type YogaApi, type YogaBenchmarkScenario } from "../scenario.ts";
-
-type Yoga = YogaApi["default"];
-
-const sessionCount = 18;
-const messageCount = 32;
-
-export const yogaCodingAgentChatScenario: YogaBenchmarkScenario = {
- id: "yoga-coding-agent-chat-initial-layout",
- name: "Yoga coding-agent chat: initial layout",
- question:
- "How long does a Yoga consumer take to build, measure, lay out, read, and release a modeled coding-agent screen?",
- description:
- "A fixed desktop chat model contains a session sidebar, measured labels, a message transcript, and a composer. All targets execute the same public Yoga API calls.",
- transaction:
- "Create Config and Nodes, apply styles and constant intrinsic-size callbacks, build the tree, calculate layout, read every computed layout, then release the tree and Config.",
- parameters: {
- viewportWidth: 1280,
- viewportHeight: 800,
- sessionCount,
- messageCount,
- },
- createTransaction(api) {
- const sessionContexts = Array.from({ length: sessionCount }, (_, index) => ({
- characters: 14 + ((index * 7) % 24),
- lineHeight: 16,
- }));
- const messageContexts = Array.from({ length: messageCount }, (_, index) => ({
- characters: 56 + ((index * 37) % 280),
- lineHeight: 18,
- }));
-
- return () => {
- const Yoga: Yoga = api.default;
- const config = Yoga.Config.create();
- config.setPointScaleFactor(1);
- const nodes: Node[] = [];
- const createNode = (configure?: (node: Node) => void): Node => {
- const node = Yoga.Node.createWithConfig(config);
- nodes.push(node);
- configure?.(node);
- return node;
- };
- const parent = (configure: (node: Node) => void, children: readonly Node[]): Node => {
- const node = createNode(configure);
- for (const [index, child] of children.entries()) node.insertChild(child, index);
- return node;
- };
- const fixedLeaf = (width: number, height: number): Node =>
- createNode((node) => {
- node.setWidth(width);
- node.setHeight(height);
- });
- const measuredLeaf = (characters: number, lineHeight: number): Node =>
- createNode((node) => {
- node.setFlexShrink(1);
- node.setMinWidth(0);
- node.setMeasureFunc(() => {
- const naturalWidth = Math.max(8, characters * 7);
- const width = Math.min(naturalWidth, 280);
- return {
- width,
- height: Math.max(1, Math.ceil(naturalWidth / width)) * lineHeight,
- };
- });
- });
-
- const sessions = sessionContexts.map((context) =>
- parent(
- (node) => {
- node.setFlexDirection(api.FlexDirection.Row);
- node.setHeight(32);
- node.setPadding(api.Edge.Horizontal, 8);
- node.setGap(api.Gutter.All, 6);
- },
- [measuredLeaf(context.characters, context.lineHeight), fixedLeaf(18, 18)],
- ),
- );
- const sidebar = parent((node) => {
- node.setWidth(264);
- node.setPadding(api.Edge.All, 12);
- node.setGap(api.Gutter.All, 8);
- }, sessions);
-
- const messages = messageContexts.map((context, index) => {
- const actions = parent(
- (node) => {
- node.setFlexDirection(api.FlexDirection.Row);
- node.setHeight(20);
- node.setGap(api.Gutter.All, 6);
- },
- [fixedLeaf(42 + (index % 3) * 8, 20), fixedLeaf(52, 20)],
- );
- const body = parent(
- (node) => {
- node.setFlexGrow(1);
- node.setMinWidth(0);
- node.setGap(api.Gutter.All, 6);
- },
- [measuredLeaf(context.characters, context.lineHeight), actions],
- );
- return parent(
- (node) => {
- node.setFlexDirection(api.FlexDirection.Row);
- node.setGap(api.Gutter.All, 10);
- },
- [fixedLeaf(32, 32), body],
- );
- });
- const transcript = parent((node) => {
- node.setFlexGrow(1);
- node.setMinHeight(0);
- node.setGap(api.Gutter.All, 12);
- }, messages);
- const composer = parent(
- (node) => {
- node.setFlexDirection(api.FlexDirection.Row);
- node.setHeight(72);
- node.setPadding(api.Edge.All, 12);
- node.setGap(api.Gutter.All, 8);
- },
- [measuredLeaf(24, 18), fixedLeaf(72, 40)],
- );
- const main = parent(
- (node) => {
- node.setFlexGrow(1);
- node.setMinWidth(0);
- node.setPadding(api.Edge.All, 16);
- node.setGap(api.Gutter.All, 12);
- },
- [transcript, composer],
- );
- const root = parent(
- (node) => {
- node.setFlexDirection(api.FlexDirection.Row);
- node.setWidth(1280);
- node.setHeight(800);
- },
- [sidebar, main],
- );
-
- try {
- root.calculateLayout(1280, 800, api.Direction.LTR);
- return readYogaLayoutChecksum(nodes);
- } finally {
- root.freeRecursive();
- Yoga.Config.destroy(config);
- }
- };
- },
-};
diff --git a/benchmarks/yoga-deep-tree/benchmark.ts b/benchmarks/yoga-deep-tree/benchmark.ts
deleted file mode 100644
index e859b1b..0000000
--- a/benchmarks/yoga-deep-tree/benchmark.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import type { Node } from "@taffyjs/yoga";
-
-import { readYogaLayoutChecksum, type YogaBenchmarkScenario } from "../scenario.ts";
-
-function createYogaDeepTreeScenario(leafCount: number): YogaBenchmarkScenario {
- const nodeCount = leafCount * 2 - 1;
- const depth = Math.log2(leafCount) + 1;
-
- return {
- id: `yoga-deep-tree-${nodeCount}-nodes`,
- name: `Yoga deep tree: ${nodeCount.toLocaleString("en-US")} nodes`,
- question: `How does a complete Yoga public transaction scale for a balanced binary tree with ${depth} levels?`,
- description:
- "A deterministic binary hierarchy alternates row and column Flexbox containers while exercising public Node creation, style setters, topology, output reads, and release.",
- transaction:
- "Create Config and Nodes, build every hierarchy level, calculate layout, read every computed layout, then release the tree and Config.",
- parameters: {
- leafCount,
- nodeCount,
- depth,
- branchingFactor: 2,
- },
- createTransaction(api) {
- return () => {
- const Yoga = api.default;
- const config = Yoga.Config.create();
- config.setPointScaleFactor(1);
- const nodes: Node[] = [];
- let level = Array.from({ length: leafCount }, () => {
- const node = Yoga.Node.createWithConfig(config);
- nodes.push(node);
- node.setWidth(10);
- node.setHeight(10);
- node.setFlexGrow(1);
- return node;
- });
- let levelIndex = 0;
-
- while (level.length > 1) {
- const nextLevel: Node[] = [];
- for (let index = 0; index < level.length; index += 2) {
- const node = Yoga.Node.createWithConfig(config);
- nodes.push(node);
- node.setFlexDirection(
- levelIndex % 2 === 0 ? api.FlexDirection.Row : api.FlexDirection.Column,
- );
- node.setFlexGrow(1);
- node.setMinWidth(0);
- node.setMinHeight(0);
- node.setPadding(api.Edge.All, 1);
- node.setGap(api.Gutter.All, 1);
- node.insertChild(level[index], 0);
- node.insertChild(level[index + 1], 1);
- nextLevel.push(node);
- }
- level = nextLevel;
- levelIndex += 1;
- }
-
- const root = level[0];
- root.setWidth(1200);
- root.setHeight(800);
- try {
- root.calculateLayout(1200, 800, api.Direction.LTR);
- return readYogaLayoutChecksum(nodes);
- } finally {
- root.freeRecursive();
- Yoga.Config.destroy(config);
- }
- };
- },
- };
-}
-
-export const yogaDeepTreeScenarios: readonly YogaBenchmarkScenario[] = [
- createYogaDeepTreeScenario(256),
-];
diff --git a/benchmarks/yoga-wide-tree/benchmark.ts b/benchmarks/yoga-wide-tree/benchmark.ts
deleted file mode 100644
index fc1bf65..0000000
--- a/benchmarks/yoga-wide-tree/benchmark.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import type { Node } from "@taffyjs/yoga";
-
-import { readYogaLayoutChecksum, type YogaBenchmarkScenario } from "../scenario.ts";
-
-function createYogaWideTreeScenario(leafCount: number): YogaBenchmarkScenario {
- return {
- id: `yoga-wide-tree-${leafCount}-leaves`,
- name: `Yoga wide tree: ${leafCount.toLocaleString("en-US")} leaves`,
- question: `How does a complete Yoga public transaction scale for a shallow root with ${leafCount.toLocaleString("en-US")} children?`,
- description:
- "A two-level wrapping Flexbox tree stresses public Yoga Node creation, style setters, child insertion, layout calculation, output reads, and release.",
- transaction:
- "Create Config and Nodes, apply styles, attach every leaf, calculate layout, read every computed layout, then release the tree and Config.",
- parameters: {
- leafCount,
- nodeCount: leafCount + 1,
- depth: 2,
- },
- createTransaction(api) {
- const leafWidths = [40, 52, 64, 76] as const;
-
- return () => {
- const Yoga = api.default;
- const config = Yoga.Config.create();
- config.setPointScaleFactor(1);
- const nodes: Node[] = [];
- const root = Yoga.Node.createWithConfig(config);
- nodes.push(root);
- root.setFlexDirection(api.FlexDirection.Row);
- root.setFlexWrap(api.Wrap.Wrap);
- root.setWidth(1200);
- root.setPadding(api.Edge.All, 4);
- root.setGap(api.Gutter.All, 2);
-
- for (let index = 0; index < leafCount; index += 1) {
- const leaf = Yoga.Node.createWithConfig(config);
- nodes.push(leaf);
- leaf.setWidth(leafWidths[index % leafWidths.length]);
- leaf.setHeight(16 + (index % leafWidths.length) * 2);
- leaf.setFlexGrow(1);
- root.insertChild(leaf, index);
- }
-
- try {
- root.calculateLayout(1200, undefined, api.Direction.LTR);
- return readYogaLayoutChecksum(nodes);
- } finally {
- root.freeRecursive();
- Yoga.Config.destroy(config);
- }
- };
- },
- };
-}
-
-export const yogaWideTreeScenarios: readonly YogaBenchmarkScenario[] = [
- createYogaWideTreeScenario(1_000),
-];
From 25d0cfe2fb280809bb55e32228d25e410165f2f6 Mon Sep 17 00:00:00 2001
From: Yunfei He
Date: Mon, 17 Aug 2026 12:23:43 +0800
Subject: [PATCH 2/3] docs(benchmarks): publish scenario comparison results
---
benchmarks/results/published.json | 11505 ++++++++++++++++++++++++++--
1 file changed, 11022 insertions(+), 483 deletions(-)
diff --git a/benchmarks/results/published.json b/benchmarks/results/published.json
index 581b15b..a6a9edf 100644
--- a/benchmarks/results/published.json
+++ b/benchmarks/results/published.json
@@ -1,16 +1,16 @@
{
- "schemaVersion": 1,
- "generatedAt": "2026-08-16T13:51:15.135Z",
+ "schemaVersion": 2,
+ "generatedAt": "2026-08-17T04:22:28.126Z",
"source": {
- "commit": "c05bf122c9111d77d2f470f1e607da4d26dca24a",
+ "commit": "1cbbd1595f536e665f67e0e9757c9ca27fcf8c46",
"dirty": false
},
"environment": {
"node": "v24.19.0",
- "platform": "darwin",
- "release": "25.5.0",
- "arch": "arm64",
- "cpu": "Apple M3 Pro"
+ "platform": "linux",
+ "release": "6.18.25-x64v3-xanmod1",
+ "arch": "x64",
+ "cpu": "13th Gen Intel(R) Core(TM) i5-13500H"
},
"profile": {
"id": "publication",
@@ -24,510 +24,11049 @@
"maxRelativeMarginOfError": 30,
"maxRoundMedianSpread": null
},
- "comparisonGroups": [
+ "baselineTargetId": "yoga-layout",
+ "targets": [
{
- "id": "taffy-api",
- "name": "Taffy API",
- "targets": [
+ "id": "node",
+ "packageName": "@taffyjs/node",
+ "apiKind": "taffy",
+ "apiLabel": "TaffyTree",
+ "runtimeLabel": "Native Node-API"
+ },
+ {
+ "id": "wasm",
+ "packageName": "@taffyjs/wasm",
+ "apiKind": "taffy",
+ "apiLabel": "TaffyTree",
+ "runtimeLabel": "WASI Wasm"
+ },
+ {
+ "id": "taffy-yoga",
+ "packageName": "@taffyjs/yoga",
+ "apiKind": "yoga",
+ "apiLabel": "Yoga Node",
+ "runtimeLabel": "Native Taffy"
+ },
+ {
+ "id": "taffy-yoga-wasm",
+ "packageName": "@taffyjs/yoga-wasm",
+ "apiKind": "yoga",
+ "apiLabel": "Yoga Node",
+ "runtimeLabel": "WASI Taffy"
+ },
+ {
+ "id": "yoga-layout",
+ "packageName": "yoga-layout",
+ "apiKind": "yoga",
+ "apiLabel": "Yoga Node",
+ "runtimeLabel": "Yoga Wasm"
+ }
+ ],
+ "scenarios": [
+ {
+ "id": "nested-ui-50-nodes",
+ "name": "Small nested UI: 50 nodes",
+ "question": "What does a complete 50-node nested layout transaction cost?",
+ "description": "A deterministic near-balanced hierarchy alternates row and column Flexbox containers. It represents nested application UI while keeping the topology identical for every package and API.",
+ "transaction": "Create the public tree, apply styles, attach every child, calculate layout, read left/top/width/height for every node, and release resources when the API requires it.",
+ "parameters": {
+ "nodeCount": 50,
+ "leafCount": 25,
+ "depth": 7,
+ "maximumBranchingFactor": 2,
+ "viewportWidth": 1200,
+ "viewportHeight": 800
+ },
+ "results": [
+ {
+ "targetId": "node",
+ "packageName": "@taffyjs/node",
+ "hz": 1256.3905776991598,
+ "meanMs": 0.7959308337311074,
+ "medianMs": 0.7810399999999618,
+ "minMs": 0.7553800000000592,
+ "maxMs": 1.625678999999991,
+ "p75Ms": 0.7959789999999884,
+ "p99Ms": 0.9692880000000059,
+ "maxRelativeMarginOfError": 0.3643220974183718,
+ "roundCount": 1,
+ "sampleCount": 1257,
+ "rounds": [
+ {
+ "hz": 1256.3905776991598,
+ "meanMs": 0.7959308337311074,
+ "medianMs": 0.7810399999999618,
+ "minMs": 0.7553800000000592,
+ "maxMs": 1.625678999999991,
+ "p75Ms": 0.7959789999999884,
+ "p99Ms": 0.9692880000000059,
+ "relativeMarginOfError": 0.3643220974183718,
+ "sampleCount": 1257,
+ "samplesMs": [
+ 0.7553800000000592,
+ 0.7558460000000196,
+ 0.7571339999999509,
+ 0.7580030000000306,
+ 0.7581169999998565,
+ 0.7581430000000182,
+ 0.7583480000000691,
+ 0.7588430000000699,
+ 0.7596109999999499,
+ 0.759644999999864,
+ 0.7597149999999147,
+ 0.75994199999991,
+ 0.760106000000178,
+ 0.76013399999988,
+ 0.7603679999999713,
+ 0.760377999999946,
+ 0.760473999999931,
+ 0.7606019999998352,
+ 0.7609520000000884,
+ 0.761058999999932,
+ 0.7612220000000889,
+ 0.7614519999999629,
+ 0.7615200000000186,
+ 0.7617390000000341,
+ 0.761792000000014,
+ 0.7619049999998424,
+ 0.7620210000000043,
+ 0.7621980000001258,
+ 0.7622919999998885,
+ 0.7623470000000907,
+ 0.7624430000000757,
+ 0.7629030000000512,
+ 0.7629150000000209,
+ 0.7632050000001982,
+ 0.7632489999999734,
+ 0.7632670000000417,
+ 0.7637360000001081,
+ 0.7638090000000375,
+ 0.7638870000000679,
+ 0.7639020000001437,
+ 0.7639890000000378,
+ 0.7640269999999418,
+ 0.7640559999999823,
+ 0.7640790000000379,
+ 0.7641100000000165,
+ 0.7641470000000936,
+ 0.7641509999998561,
+ 0.7642149999999788,
+ 0.7643049999999221,
+ 0.7643060000000332,
+ 0.7644420000001446,
+ 0.764475000000175,
+ 0.7645019999999931,
+ 0.764650999999958,
+ 0.764756000000034,
+ 0.7647589999999127,
+ 0.76476300000013,
+ 0.7649630000000798,
+ 0.7649940000000015,
+ 0.765090999999984,
+ 0.7651349999999866,
+ 0.765233999999964,
+ 0.765260000000012,
+ 0.7653109999998833,
+ 0.7653410000000349,
+ 0.7653639999999768,
+ 0.7653980000000047,
+ 0.765406999999982,
+ 0.7654099999999744,
+ 0.7654880000000048,
+ 0.7655379999998786,
+ 0.7658180000000812,
+ 0.7658199999998487,
+ 0.7658269999999447,
+ 0.7658320000000458,
+ 0.7658460000000105,
+ 0.7659069999999701,
+ 0.7659620000001723,
+ 0.7659820000000082,
+ 0.7660019999999577,
+ 0.7660040000000095,
+ 0.7661309999998593,
+ 0.7661659999998847,
+ 0.7661850000000641,
+ 0.7662820000000465,
+ 0.7662880000000314,
+ 0.7662890000001426,
+ 0.7662949999999,
+ 0.7663049999999885,
+ 0.7663749999999254,
+ 0.766399999999976,
+ 0.7664069999998446,
+ 0.7664330000000064,
+ 0.76644199999987,
+ 0.7664479999998548,
+ 0.7664899999999761,
+ 0.7666289999999663,
+ 0.7666549999999006,
+ 0.766680999999835,
+ 0.7667089999999916,
+ 0.7667280000000005,
+ 0.766744000000017,
+ 0.7667550000001029,
+ 0.7667619999999715,
+ 0.7667669999998452,
+ 0.7668859999998858,
+ 0.7670339999999669,
+ 0.7670570000000225,
+ 0.7670740000000933,
+ 0.7670800000000781,
+ 0.7671640000000934,
+ 0.7672120000000859,
+ 0.7672189999999546,
+ 0.7672270000000481,
+ 0.767236000000139,
+ 0.7673090000000116,
+ 0.7673160000000507,
+ 0.7673219999999219,
+ 0.7673220000001493,
+ 0.7675610000000006,
+ 0.7676300000000538,
+ 0.7676409999999123,
+ 0.767716000000064,
+ 0.7677410000000009,
+ 0.7677810000000136,
+ 0.767791000000102,
+ 0.7678099999999404,
+ 0.7679229999999961,
+ 0.7679560000000265,
+ 0.7679590000000189,
+ 0.7679789999999684,
+ 0.7680740000000696,
+ 0.76808699999998,
+ 0.7681190000000697,
+ 0.7681439999998929,
+ 0.7681609999999637,
+ 0.7681779999999776,
+ 0.7681780000000344,
+ 0.7682060000001911,
+ 0.7682660000000396,
+ 0.7682769999998982,
+ 0.7682879999999841,
+ 0.768291999999974,
+ 0.7683160000001408,
+ 0.7683170000000246,
+ 0.7683210000000145,
+ 0.7684580000000096,
+ 0.7684719999999743,
+ 0.7685290000001714,
+ 0.7685749999999985,
+ 0.7685880000000225,
+ 0.7685880000000225,
+ 0.7686180000000604,
+ 0.7686250000000427,
+ 0.7686260000000402,
+ 0.7686610000000655,
+ 0.7686650000000554,
+ 0.7686919999999873,
+ 0.7686979999999721,
+ 0.7687009999999646,
+ 0.7687260000000151,
+ 0.76878099999999,
+ 0.7688150000001315,
+ 0.7688850000000684,
+ 0.7689280000000736,
+ 0.7689360000000534,
+ 0.7689480000000231,
+ 0.7689789999999448,
+ 0.7690620000000763,
+ 0.7690849999999614,
+ 0.7690959999999905,
+ 0.769121000000041,
+ 0.7691400000001067,
+ 0.7691810000000032,
+ 0.7692110000000412,
+ 0.7692200000000184,
+ 0.7693709999999783,
+ 0.7693729999999732,
+ 0.7694040000000086,
+ 0.7694260000000668,
+ 0.769506999999976,
+ 0.7695359999999596,
+ 0.7695560000000796,
+ 0.7695760000000291,
+ 0.7696129999999357,
+ 0.7696720000001278,
+ 0.7696829999999864,
+ 0.769694999999956,
+ 0.7697279999999864,
+ 0.7697630000000117,
+ 0.7697819999999638,
+ 0.7697860000000674,
+ 0.7698369999999954,
+ 0.7698380000001634,
+ 0.7698399999999879,
+ 0.7698860000000423,
+ 0.7699010000001181,
+ 0.7699029999998857,
+ 0.7699699999999439,
+ 0.7699780000000374,
+ 0.7699809999999161,
+ 0.7700179999999364,
+ 0.7700370000000021,
+ 0.7700939999999719,
+ 0.7701060000000552,
+ 0.7701329999999871,
+ 0.7701720000000023,
+ 0.7702170000000024,
+ 0.7702239999999847,
+ 0.7702239999999847,
+ 0.7702369999999519,
+ 0.7702780000000757,
+ 0.7703139999999848,
+ 0.770354999999995,
+ 0.7703569999998763,
+ 0.7703950000000077,
+ 0.770430000000033,
+ 0.7704919999999902,
+ 0.7705210000000307,
+ 0.7705219999999144,
+ 0.7705419999999776,
+ 0.7706480000000511,
+ 0.7706879999999501,
+ 0.7706960000000436,
+ 0.770727000000079,
+ 0.7707639999999856,
+ 0.7707839999998214,
+ 0.7708900000000085,
+ 0.770898000000102,
+ 0.7709409999999934,
+ 0.770964000000049,
+ 0.7709720000000289,
+ 0.7709800000000087,
+ 0.7709919999999784,
+ 0.7710020000001805,
+ 0.7710050000000592,
+ 0.7710240000000113,
+ 0.7710670000001301,
+ 0.7710830000000897,
+ 0.771129999999971,
+ 0.7711320000000796,
+ 0.7711520000000291,
+ 0.7711710000000949,
+ 0.7712530000000015,
+ 0.771253999999999,
+ 0.7712619999999788,
+ 0.7712719999999536,
+ 0.7712790000000496,
+ 0.7713189999999486,
+ 0.7713220000000547,
+ 0.7713470000001053,
+ 0.7714230000001407,
+ 0.7714359999999942,
+ 0.77145500000006,
+ 0.7714930000000777,
+ 0.7714980000000082,
+ 0.771530000000098,
+ 0.771541999999954,
+ 0.7715580000000273,
+ 0.7715650000000096,
+ 0.7715850000000728,
+ 0.7716619999998784,
+ 0.7716760000000136,
+ 0.771772999999996,
+ 0.771829999999909,
+ 0.771837000000005,
+ 0.771844000000101,
+ 0.7718869999999924,
+ 0.7719299999999976,
+ 0.7719499999999471,
+ 0.7719629999999711,
+ 0.7719769999999926,
+ 0.7720589999998992,
+ 0.7720620000000054,
+ 0.7720830000000092,
+ 0.7720890000000509,
+ 0.7720890000000509,
+ 0.7721169999999802,
+ 0.7721199999999726,
+ 0.7721310000000017,
+ 0.7721330000000535,
+ 0.7722200000000043,
+ 0.7722780000000284,
+ 0.7723760000000084,
+ 0.7724080000000413,
+ 0.7724189999998998,
+ 0.7724719999999934,
+ 0.7724920000000566,
+ 0.7725379999999973,
+ 0.7725530000000163,
+ 0.7725689999999759,
+ 0.7725799999998344,
+ 0.7725900000000365,
+ 0.7725909999999203,
+ 0.7725940000000264,
+ 0.7726860000000215,
+ 0.7727199999999357,
+ 0.7727409999999963,
+ 0.7727429999999913,
+ 0.7727489999999761,
+ 0.7727519999999686,
+ 0.7727670000000444,
+ 0.772784999999999,
+ 0.7727929999999787,
+ 0.7728340000001026,
+ 0.7728400000000875,
+ 0.7728500000000622,
+ 0.7728539999999384,
+ 0.7728680000000168,
+ 0.7728710000000092,
+ 0.7729040000000396,
+ 0.7729150000000118,
+ 0.7730090000000018,
+ 0.7730139999999892,
+ 0.7730439999999135,
+ 0.7730569999999943,
+ 0.7731080000000361,
+ 0.7731210000000601,
+ 0.7731639999999516,
+ 0.7732560000000603,
+ 0.7732609999999909,
+ 0.7732690000000275,
+ 0.7733459999999468,
+ 0.7733769999999822,
+ 0.7733799999999746,
+ 0.7733819999998559,
+ 0.7734169999998812,
+ 0.7734189999999899,
+ 0.7734239999999772,
+ 0.7734550000000127,
+ 0.7734609999999975,
+ 0.7734729999999672,
+ 0.7734740000000215,
+ 0.7734839999999963,
+ 0.7734870000000456,
+ 0.7734990000000153,
+ 0.7735010000001239,
+ 0.7735180000001947,
+ 0.7735280000000557,
+ 0.7735329999998157,
+ 0.7735399999999117,
+ 0.7735440000000153,
+ 0.7736039999999775,
+ 0.7736130000000685,
+ 0.7736460000000989,
+ 0.7736520000000269,
+ 0.7736629999999423,
+ 0.7736929999999802,
+ 0.7737039999999524,
+ 0.7737369999999828,
+ 0.7737509999999475,
+ 0.7737539999999399,
+ 0.773755000000051,
+ 0.7737740000000031,
+ 0.773775999999998,
+ 0.7737919999999576,
+ 0.7738200000000006,
+ 0.7738220000001093,
+ 0.7738360000000739,
+ 0.7738580000000184,
+ 0.7738950000000386,
+ 0.7739100000000008,
+ 0.773926000000074,
+ 0.7740430000001197,
+ 0.7740440000000035,
+ 0.7740569999999707,
+ 0.7740689999999404,
+ 0.7740929999999935,
+ 0.7741160000000491,
+ 0.7741289999999026,
+ 0.7741290000000163,
+ 0.774169000000029,
+ 0.7741720000000214,
+ 0.7742359999999735,
+ 0.7742419999999584,
+ 0.774255999999923,
+ 0.7743030000000317,
+ 0.7743760000000748,
+ 0.7744300000000521,
+ 0.7744410000000244,
+ 0.7744959999999992,
+ 0.7744969999999967,
+ 0.77451300000007,
+ 0.7745390000000043,
+ 0.7745550000000208,
+ 0.7745729999999185,
+ 0.7745810000001256,
+ 0.7745889999999918,
+ 0.7745950000000903,
+ 0.7746140000000423,
+ 0.7746409999999742,
+ 0.7746490000001813,
+ 0.7747540000000299,
+ 0.7747570000000223,
+ 0.7747989999998026,
+ 0.7748020000000224,
+ 0.7748269999999593,
+ 0.7748289999999542,
+ 0.7748870000000352,
+ 0.7749000000000024,
+ 0.7749009999999998,
+ 0.7749620000000164,
+ 0.7749719999999343,
+ 0.7750129999999444,
+ 0.7750149999999394,
+ 0.7750180000000455,
+ 0.775037999999995,
+ 0.77503999999999,
+ 0.7750439999999799,
+ 0.7750479999999698,
+ 0.7750649999999268,
+ 0.7750790000000052,
+ 0.7751739999999927,
+ 0.7752290000000244,
+ 0.7752309999998488,
+ 0.7752440000000433,
+ 0.7752470000000358,
+ 0.7752800000000661,
+ 0.7753349999999273,
+ 0.7753399999999147,
+ 0.7753440000000182,
+ 0.7753500000000031,
+ 0.7753629999999703,
+ 0.7753650000000789,
+ 0.7753700000000663,
+ 0.7753940000000057,
+ 0.7754299999999148,
+ 0.7754390000000058,
+ 0.7754579999998441,
+ 0.7754660000000513,
+ 0.7755139999999301,
+ 0.7755360000001019,
+ 0.7755750000000035,
+ 0.7755839999999807,
+ 0.7755849999999782,
+ 0.7756630000000087,
+ 0.7757020000000239,
+ 0.7757039999999051,
+ 0.7757050000000163,
+ 0.7757070000000112,
+ 0.7757560000000012,
+ 0.775763999999981,
+ 0.775765999999976,
+ 0.775765999999976,
+ 0.7757699999999659,
+ 0.7757859999999823,
+ 0.7758019999999988,
+ 0.7758260000000519,
+ 0.7758329999999773,
+ 0.7758660000000646,
+ 0.7758680000000027,
+ 0.7759230000000343,
+ 0.775963000000047,
+ 0.7759689999999182,
+ 0.7759849999999915,
+ 0.775985999999989,
+ 0.776012000000037,
+ 0.7760719999999992,
+ 0.7760739999999942,
+ 0.7760840000000258,
+ 0.7761039999999753,
+ 0.7761069999999108,
+ 0.7761169999998856,
+ 0.7761830000000032,
+ 0.7761940000000322,
+ 0.7762659999999642,
+ 0.7762820000000374,
+ 0.7763310000000274,
+ 0.7763400000001184,
+ 0.7763570000000186,
+ 0.776393999999982,
+ 0.7764369999999872,
+ 0.7764570000000504,
+ 0.7764589999999885,
+ 0.7764709999999582,
+ 0.7765299999999797,
+ 0.7765340000000833,
+ 0.7765589999999634,
+ 0.7765699999999924,
+ 0.7766019999999116,
+ 0.7766879999999219,
+ 0.776693000000023,
+ 0.7767300000000432,
+ 0.7767320000000382,
+ 0.7767539999999826,
+ 0.776756999999975,
+ 0.7767840000000206,
+ 0.7768280000000232,
+ 0.7768389999999954,
+ 0.776881000000003,
+ 0.7769460000000095,
+ 0.7769469999998364,
+ 0.7769550000000436,
+ 0.7769829999999729,
+ 0.7770429999999351,
+ 0.7770470000000387,
+ 0.7770489999998063,
+ 0.7770509999999717,
+ 0.7770530000000235,
+ 0.7770790000000716,
+ 0.7771270000000641,
+ 0.7771370000000388,
+ 0.7771510000000035,
+ 0.7772589999999582,
+ 0.7772710000000416,
+ 0.7772770000000264,
+ 0.7772850000001199,
+ 0.7773329999999987,
+ 0.7773350000000505,
+ 0.7773910000000228,
+ 0.7774140000000216,
+ 0.7774349999999686,
+ 0.7774450000000002,
+ 0.7774820000000204,
+ 0.7775080000000116,
+ 0.7775229999999738,
+ 0.7775240000000849,
+ 0.7775430000001506,
+ 0.7775469999999132,
+ 0.7775639999999839,
+ 0.7775899999999751,
+ 0.7776539999999841,
+ 0.7777849999999944,
+ 0.7778310000001056,
+ 0.7778410000000804,
+ 0.777945999999929,
+ 0.7780629999999746,
+ 0.7780710000000681,
+ 0.7780890000000227,
+ 0.7780909999999039,
+ 0.7780969999998888,
+ 0.7781350000000202,
+ 0.778135999999904,
+ 0.7781670000000531,
+ 0.7783060000000432,
+ 0.7783269999999902,
+ 0.7783449999999448,
+ 0.7783670000000029,
+ 0.7784750000000713,
+ 0.7784849999999324,
+ 0.7785229999999501,
+ 0.7785420000000158,
+ 0.7785519999999906,
+ 0.7785749999999325,
+ 0.7785800000001473,
+ 0.7785930000000008,
+ 0.7786779999998998,
+ 0.7787409999999682,
+ 0.7787580000000389,
+ 0.7787930000000642,
+ 0.7788039999999228,
+ 0.7788370000000668,
+ 0.7788379999999506,
+ 0.7788560000000189,
+ 0.7788590000000113,
+ 0.7788700000000972,
+ 0.7788830000000075,
+ 0.7788940000000366,
+ 0.7789080000000013,
+ 0.7789429999999129,
+ 0.7789830000000393,
+ 0.7789920000000166,
+ 0.77900899999986,
+ 0.7790300000000343,
+ 0.7790709999999876,
+ 0.7790999999999713,
+ 0.7791449999999713,
+ 0.7791799999999967,
+ 0.7791840000000434,
+ 0.7792010000000573,
+ 0.779215000000022,
+ 0.7792440000000624,
+ 0.7792520000000422,
+ 0.779260000000022,
+ 0.7792699999999968,
+ 0.7792769999998654,
+ 0.779337000000055,
+ 0.7793679999999767,
+ 0.7793990000000122,
+ 0.7794340000000375,
+ 0.7794470000001184,
+ 0.7794729999999959,
+ 0.7795019999999795,
+ 0.7795579999999518,
+ 0.7796720000001187,
+ 0.7797009999999887,
+ 0.7797170000000051,
+ 0.7797530000000279,
+ 0.7797859999999446,
+ 0.7798280000000091,
+ 0.7798299999999472,
+ 0.7798599999999851,
+ 0.7798819999999296,
+ 0.7799329999999145,
+ 0.7799479999999903,
+ 0.7799910000001091,
+ 0.780001000000027,
+ 0.7800030000000788,
+ 0.7800400000000991,
+ 0.7800760000000082,
+ 0.7800949999999602,
+ 0.7801149999999097,
+ 0.7801249999999982,
+ 0.7801959999999895,
+ 0.780236000000059,
+ 0.7802860000000464,
+ 0.7803180000000793,
+ 0.7803269999999998,
+ 0.7803579999999783,
+ 0.7803589999999758,
+ 0.7804629999999406,
+ 0.7804629999999975,
+ 0.7805020000000695,
+ 0.7805150000000367,
+ 0.7806080000000293,
+ 0.7806229999999914,
+ 0.7807450000000244,
+ 0.7807579999999916,
+ 0.7807670000000826,
+ 0.7807680000000801,
+ 0.7808489999999892,
+ 0.7808789999999135,
+ 0.7808929999999918,
+ 0.7809239999999136,
+ 0.7809550000000627,
+ 0.7809649999999806,
+ 0.7809700000000248,
+ 0.7809960000001865,
+ 0.7810399999999618,
+ 0.7811090000000149,
+ 0.7811249999999745,
+ 0.7811310000000162,
+ 0.7811580000000049,
+ 0.7811679999999797,
+ 0.7812369999999191,
+ 0.7812440000000151,
+ 0.781296999999995,
+ 0.7813240000000405,
+ 0.7813650000000507,
+ 0.7813699999999244,
+ 0.7814029999999548,
+ 0.7814180000000306,
+ 0.7814309999999978,
+ 0.7814319999999952,
+ 0.7814389999999776,
+ 0.7814610000000357,
+ 0.78149099999996,
+ 0.7815469999999891,
+ 0.781564000000003,
+ 0.7815689999999904,
+ 0.7816010000000233,
+ 0.781641000000036,
+ 0.7816450000000259,
+ 0.7816470000000209,
+ 0.781671000000074,
+ 0.7816789999999401,
+ 0.7817250000000513,
+ 0.7817440000000033,
+ 0.7817619999999579,
+ 0.7817729999999301,
+ 0.7817750000000387,
+ 0.7817759999998088,
+ 0.7817810000000236,
+ 0.781784000000016,
+ 0.7818300000000136,
+ 0.78187099999991,
+ 0.7819479999999999,
+ 0.7819500000000517,
+ 0.7819509999999923,
+ 0.7819739999999911,
+ 0.7819739999999911,
+ 0.7820239999999785,
+ 0.7820419999999899,
+ 0.7820709999999735,
+ 0.7821119999999837,
+ 0.7821380000000318,
+ 0.782169999999951,
+ 0.7821920000000091,
+ 0.782244999999989,
+ 0.7823020000000724,
+ 0.7823499999999513,
+ 0.7823519999999462,
+ 0.7823819999998705,
+ 0.7823880000000827,
+ 0.7824229999999943,
+ 0.7824509999999236,
+ 0.7824950000001536,
+ 0.7825070000000096,
+ 0.7825729999999567,
+ 0.7826380000000199,
+ 0.7826579999999694,
+ 0.7826580000000831,
+ 0.7827219999999784,
+ 0.78273200000001,
+ 0.7827629999999317,
+ 0.7827750000000151,
+ 0.7828170000000227,
+ 0.7828790000000936,
+ 0.7828899999999521,
+ 0.7829339999999547,
+ 0.7829759999999624,
+ 0.7829810000000634,
+ 0.7830089999999927,
+ 0.783030999999994,
+ 0.7830599999999777,
+ 0.783064999999965,
+ 0.7831519999999728,
+ 0.7831540000000246,
+ 0.7831620000000612,
+ 0.7832250000001295,
+ 0.7832579999999894,
+ 0.7832900000000791,
+ 0.7833870000000047,
+ 0.7834389999999303,
+ 0.7835129999999708,
+ 0.78354499999989,
+ 0.7836319999998977,
+ 0.7836519999999609,
+ 0.7836790000000065,
+ 0.7838220000001002,
+ 0.7838919999999234,
+ 0.7839449999999033,
+ 0.783960000000036,
+ 0.7840089999999691,
+ 0.7840260000000399,
+ 0.7840479999999843,
+ 0.7840550000000803,
+ 0.7840699999999856,
+ 0.7841060000000084,
+ 0.7841670000000249,
+ 0.784185999999977,
+ 0.7842689999999948,
+ 0.7843399999999292,
+ 0.7843410000000404,
+ 0.7843520000000126,
+ 0.7843530000000101,
+ 0.784362000000101,
+ 0.7843789999999444,
+ 0.7843879999999785,
+ 0.7843960000000152,
+ 0.7844440000000077,
+ 0.7844559999999774,
+ 0.7845429999999851,
+ 0.7845699999999738,
+ 0.7846260000000029,
+ 0.7846279999999979,
+ 0.7846420000000762,
+ 0.784669000000008,
+ 0.7846839999999702,
+ 0.7846869999999626,
+ 0.7846989999999323,
+ 0.7847329999999602,
+ 0.7847490000000334,
+ 0.7848299999999995,
+ 0.7849100000000817,
+ 0.7849429999999984,
+ 0.7849790000000212,
+ 0.7850259999999594,
+ 0.7851200000000063,
+ 0.7854109999999537,
+ 0.7854240000000345,
+ 0.7854760000000169,
+ 0.7855270000000019,
+ 0.7856269999999768,
+ 0.7856309999999667,
+ 0.7856960000000299,
+ 0.7858380000000125,
+ 0.7858410000001186,
+ 0.7858459999999923,
+ 0.78602699999999,
+ 0.7860279999999875,
+ 0.7860290000000987,
+ 0.7860799999998562,
+ 0.7861049999999636,
+ 0.7861490000000231,
+ 0.78617399999996,
+ 0.7861870000000408,
+ 0.7861890000000358,
+ 0.7862039999999979,
+ 0.7862670000001799,
+ 0.7863509999999678,
+ 0.7863770000000159,
+ 0.7863859999999931,
+ 0.7864419999999654,
+ 0.7864489999999478,
+ 0.7864679999998998,
+ 0.7864739999999983,
+ 0.7866060000000061,
+ 0.7866460000000188,
+ 0.7867780000000266,
+ 0.7868660000000318,
+ 0.7869269999999915,
+ 0.7869319999999789,
+ 0.786956000000032,
+ 0.7869740000001002,
+ 0.7869979999999259,
+ 0.7870149999999967,
+ 0.7870210000000384,
+ 0.7870330000000649,
+ 0.7870340000000624,
+ 0.7870380000000523,
+ 0.7871409999999059,
+ 0.7871780000000399,
+ 0.7872689999999238,
+ 0.7873730000000023,
+ 0.7873739999999998,
+ 0.7874409999999443,
+ 0.7874819999999545,
+ 0.7875199999999722,
+ 0.787531999999942,
+ 0.7875649999999723,
+ 0.7876429999998891,
+ 0.7878180000000157,
+ 0.7878449999999475,
+ 0.7878460000000587,
+ 0.7878799999999728,
+ 0.7878849999999602,
+ 0.787947000000031,
+ 0.7880610000000274,
+ 0.7880690000000072,
+ 0.7881469999999808,
+ 0.7882290000000012,
+ 0.7882600000000366,
+ 0.7883090000000266,
+ 0.7883289999999761,
+ 0.7884189999999762,
+ 0.7884410000000344,
+ 0.7885349999999676,
+ 0.7886059999999588,
+ 0.7886320000000069,
+ 0.7886640000000398,
+ 0.7887030000001687,
+ 0.7887369999999692,
+ 0.7888140000000021,
+ 0.7888390000000527,
+ 0.7888749999999618,
+ 0.7888899999999808,
+ 0.7889710000000036,
+ 0.7892029999999863,
+ 0.7892429999999422,
+ 0.7894450000000006,
+ 0.789449999999988,
+ 0.7895369999999957,
+ 0.7895960000000741,
+ 0.789600000000064,
+ 0.7896259999999984,
+ 0.7897609999999986,
+ 0.7897830000000567,
+ 0.7898020000000088,
+ 0.7898590000002059,
+ 0.7898649999999634,
+ 0.7899049999999761,
+ 0.7899589999999534,
+ 0.7899599999999509,
+ 0.790004999999951,
+ 0.7901110000000244,
+ 0.7901140000000169,
+ 0.7902699999999641,
+ 0.7903240000000551,
+ 0.7903860000000122,
+ 0.790395999999987,
+ 0.790442999999982,
+ 0.7905289999999923,
+ 0.790548000000058,
+ 0.7905520000000479,
+ 0.7905559999999241,
+ 0.7906090000000177,
+ 0.790623000000096,
+ 0.7907760000000508,
+ 0.7908449999999903,
+ 0.7908899999999903,
+ 0.7909150000000409,
+ 0.7909260000000131,
+ 0.7909500000000094,
+ 0.7909829999999829,
+ 0.7910239999999931,
+ 0.7910369999999602,
+ 0.7911330000000589,
+ 0.7911799999999971,
+ 0.7913750000000164,
+ 0.7915269999999737,
+ 0.7915659999999889,
+ 0.791573999999855,
+ 0.7916700000000105,
+ 0.7916950000000043,
+ 0.7917909999999893,
+ 0.7918560000000525,
+ 0.7920199999999795,
+ 0.7922040000000834,
+ 0.7922310000000152,
+ 0.7923570000000382,
+ 0.792507999999998,
+ 0.7925750000000562,
+ 0.7926489999999831,
+ 0.7927809999999909,
+ 0.7929009999999153,
+ 0.7929249999999683,
+ 0.7929420000000391,
+ 0.7930589999998574,
+ 0.7932419999999638,
+ 0.793275999999878,
+ 0.793386000000055,
+ 0.7934660000000804,
+ 0.7934699999999566,
+ 0.793480000000045,
+ 0.7935260000000426,
+ 0.7935640000000603,
+ 0.7936129999999366,
+ 0.7936259999999038,
+ 0.7938060000000178,
+ 0.7939030000000002,
+ 0.7940000000000396,
+ 0.7940169999999966,
+ 0.7940900000000966,
+ 0.7941129999999248,
+ 0.794339999999977,
+ 0.7943430000000262,
+ 0.7944720000000416,
+ 0.7945630000000392,
+ 0.7945979999999508,
+ 0.794736999999941,
+ 0.7947589999998854,
+ 0.7948070000000484,
+ 0.7948749999999336,
+ 0.7948999999999842,
+ 0.7949309999999059,
+ 0.7950439999999617,
+ 0.7951269999999795,
+ 0.7952040000000125,
+ 0.7952080000000024,
+ 0.7952090000001135,
+ 0.7952400000000353,
+ 0.7952619999999797,
+ 0.795297000000005,
+ 0.7954010000000267,
+ 0.7956259999999702,
+ 0.7957119999999804,
+ 0.7957440000000133,
+ 0.7957480000000032,
+ 0.7957509999999957,
+ 0.7958859999999959,
+ 0.7959520000000566,
+ 0.7959789999999884,
+ 0.7960050000000365,
+ 0.7960130000000163,
+ 0.7960440000000517,
+ 0.7961409999999773,
+ 0.7961649999999736,
+ 0.7962310000000343,
+ 0.7962350000000242,
+ 0.796252000000095,
+ 0.7963019999999688,
+ 0.7963489999999638,
+ 0.7964799999999741,
+ 0.7966270000000009,
+ 0.7966820000001462,
+ 0.7966989999999896,
+ 0.79678100000001,
+ 0.7968409999999722,
+ 0.7968819999999823,
+ 0.7969550000000254,
+ 0.7970779999999422,
+ 0.7971360000000232,
+ 0.7974070000000211,
+ 0.7974169999999958,
+ 0.7976429999999937,
+ 0.7976470000000973,
+ 0.7976659999999356,
+ 0.7977230000000191,
+ 0.7981709999999111,
+ 0.7982419999999593,
+ 0.7982899999999518,
+ 0.7985169999999471,
+ 0.7985619999999471,
+ 0.7986199999999144,
+ 0.7987000000000535,
+ 0.7987920000000486,
+ 0.7988990000000058,
+ 0.7989310000000387,
+ 0.7992019999999229,
+ 0.7992339999999558,
+ 0.7992910000000393,
+ 0.7993539999999939,
+ 0.7993910000000142,
+ 0.7994699999999852,
+ 0.7996239999999943,
+ 0.7996679999999969,
+ 0.7997629999999845,
+ 0.7998240000000578,
+ 0.7999760000000151,
+ 0.8000469999999495,
+ 0.8001000000000431,
+ 0.8003089999999702,
+ 0.8003089999999702,
+ 0.8005049999999301,
+ 0.8005100000000311,
+ 0.8005270000001019,
+ 0.8005389999999579,
+ 0.8005490000000464,
+ 0.8007489999999962,
+ 0.8008209999999281,
+ 0.8009639999999649,
+ 0.8010580000000118,
+ 0.8012529999998605,
+ 0.8013079999999491,
+ 0.8014729999999872,
+ 0.8019570000000158,
+ 0.8020250000000146,
+ 0.8021059999999807,
+ 0.8024120000000039,
+ 0.8024169999999913,
+ 0.8026579999999512,
+ 0.8027150000000347,
+ 0.8027510000000007,
+ 0.8027989999999932,
+ 0.8028100000000222,
+ 0.8028519999999162,
+ 0.8030360000000201,
+ 0.8030689999999368,
+ 0.803077999999914,
+ 0.8031730000000152,
+ 0.8033720000000812,
+ 0.8035340000000133,
+ 0.8035529999999653,
+ 0.8036999999999352,
+ 0.8037939999999821,
+ 0.8038090000000011,
+ 0.8039989999999761,
+ 0.8040509999999585,
+ 0.8049240000000282,
+ 0.8049419999999827,
+ 0.8050060000000485,
+ 0.8050100000000384,
+ 0.8051830000001701,
+ 0.8052609999999731,
+ 0.8054330000001073,
+ 0.8054700000000139,
+ 0.8055469999999332,
+ 0.8056040000000166,
+ 0.8057119999999713,
+ 0.8057819999999651,
+ 0.8059130000000323,
+ 0.8061159999999745,
+ 0.8062889999999925,
+ 0.8064019999999914,
+ 0.8072650000000294,
+ 0.8073899999999412,
+ 0.8078310000000783,
+ 0.8078400000000556,
+ 0.807973000000004,
+ 0.808039000000008,
+ 0.8082249999999931,
+ 0.8084349999999745,
+ 0.8085389999999961,
+ 0.80855600000001,
+ 0.8088569999999891,
+ 0.8091409999999541,
+ 0.8091450000000577,
+ 0.8094380000000001,
+ 0.809648999999979,
+ 0.8097020000000157,
+ 0.8097460000000183,
+ 0.8098999999999705,
+ 0.8101120000000037,
+ 0.8103539999999612,
+ 0.8106409999999755,
+ 0.8108200000001489,
+ 0.811093000000028,
+ 0.8111049999999977,
+ 0.8111630000000787,
+ 0.8112720000000309,
+ 0.8114570000000185,
+ 0.8117379999999912,
+ 0.8122930000000679,
+ 0.812411000000111,
+ 0.8134290000000419,
+ 0.8137480000000323,
+ 0.8138729999999441,
+ 0.8152450000000044,
+ 0.8154220000000123,
+ 0.8156490000000076,
+ 0.8162120000000073,
+ 0.8163939999999457,
+ 0.8166569999999638,
+ 0.8170420000000149,
+ 0.8172720000000027,
+ 0.8177259999999933,
+ 0.8178159999999934,
+ 0.8182219999998779,
+ 0.8183480000000145,
+ 0.8192850000000362,
+ 0.8193949999999859,
+ 0.8194429999999784,
+ 0.8194939999999633,
+ 0.8195419999999558,
+ 0.8201099999999997,
+ 0.8201840000000402,
+ 0.8208680000000186,
+ 0.8217959999999493,
+ 0.8218229999999949,
+ 0.8221699999999146,
+ 0.8224139999999807,
+ 0.8224549999999908,
+ 0.8230479999999716,
+ 0.8239810000000034,
+ 0.824542000000065,
+ 0.8249059999999986,
+ 0.8250839999999471,
+ 0.8260969999998906,
+ 0.8262650000000349,
+ 0.8266380000000026,
+ 0.829435999999987,
+ 0.8297059999999874,
+ 0.8301069999999982,
+ 0.8308449999999539,
+ 0.831389999999999,
+ 0.8317479999999478,
+ 0.8322880000000623,
+ 0.8330700000000206,
+ 0.8345600000000104,
+ 0.8349659999998948,
+ 0.8383210000000076,
+ 0.8407949999999573,
+ 0.8413550000000214,
+ 0.8416829999998754,
+ 0.8420429999999897,
+ 0.8424270000000433,
+ 0.8424520000000939,
+ 0.842542000000094,
+ 0.8430959999998322,
+ 0.8432350000000497,
+ 0.8438880000001063,
+ 0.8444400000000769,
+ 0.8444620000000214,
+ 0.845030999999949,
+ 0.8452649999999835,
+ 0.8458679999999958,
+ 0.8467689999999948,
+ 0.8482389999999214,
+ 0.8487239999999474,
+ 0.851069999999936,
+ 0.8522329999999556,
+ 0.85306700000001,
+ 0.8534789999998793,
+ 0.8536470000000236,
+ 0.8544729999999845,
+ 0.8548000000000684,
+ 0.8550199999999677,
+ 0.8558639999999968,
+ 0.8583459999999832,
+ 0.8610909999999876,
+ 0.8619749999999158,
+ 0.8625520000000506,
+ 0.8644080000000258,
+ 0.8648090000000366,
+ 0.8649469999998018,
+ 0.8655029999999897,
+ 0.865951999999993,
+ 0.8667880000000423,
+ 0.867240000000038,
+ 0.8675690000000031,
+ 0.8692559999999503,
+ 0.8704199999999673,
+ 0.870490000000018,
+ 0.8708959999999024,
+ 0.871578999999997,
+ 0.8734230000000025,
+ 0.8749230000000239,
+ 0.876987999999983,
+ 0.8779660000000149,
+ 0.8780380000000605,
+ 0.8784070000000384,
+ 0.8796060000000807,
+ 0.8806500000000028,
+ 0.8807639999999992,
+ 0.8813519999999926,
+ 0.8814150000000609,
+ 0.8817119999998795,
+ 0.8834349999999631,
+ 0.8850150000000667,
+ 0.8865789999999834,
+ 0.8866610000000037,
+ 0.8883820000000924,
+ 0.8895990000000893,
+ 0.8899010000000089,
+ 0.8900540000000206,
+ 0.8902879999999413,
+ 0.890378999999939,
+ 0.8910049999999501,
+ 0.8925360000000069,
+ 0.8934080000000222,
+ 0.89363400000002,
+ 0.8940010000000029,
+ 0.8941130000000044,
+ 0.8955969999999525,
+ 0.89664700000003,
+ 0.8966889999999239,
+ 0.897707999999966,
+ 0.8977740000000267,
+ 0.8980050000000119,
+ 0.8986360000000104,
+ 0.9002550000000156,
+ 0.9009479999999712,
+ 0.9012889999999061,
+ 0.9013390000000072,
+ 0.9025940000000219,
+ 0.9026519999999891,
+ 0.902830999999992,
+ 0.9028350000000955,
+ 0.9033259999999927,
+ 0.9054340000000138,
+ 0.9061879999999292,
+ 0.9067760000000362,
+ 0.9073210000001382,
+ 0.9073819999999841,
+ 0.9075599999999895,
+ 0.9080549999999903,
+ 0.9086879999999837,
+ 0.9088580000000093,
+ 0.9108529999999746,
+ 0.9132170000000315,
+ 0.9133620000000064,
+ 0.9142229999999927,
+ 0.9142679999999928,
+ 0.9144679999999994,
+ 0.9159669999999096,
+ 0.9168080000001737,
+ 0.9180020000000013,
+ 0.9214850000000183,
+ 0.9226830000000064,
+ 0.9233860000001641,
+ 0.9244260000000395,
+ 0.9246120000000246,
+ 0.9264980000000378,
+ 0.9317560000000071,
+ 0.9366999999999734,
+ 0.9478910000000269,
+ 0.9548050000000785,
+ 0.9566039999999703,
+ 0.9622960000000376,
+ 0.9623810000000503,
+ 0.965989000000036,
+ 0.9663140000000112,
+ 0.9677980000000161,
+ 0.9692880000000059,
+ 0.9740940000000364,
+ 0.9765370000000075,
+ 0.9955439999999953,
+ 1.0086359999999104,
+ 1.012988999999834,
+ 1.0131880000001274,
+ 1.0504949999999553,
+ 1.1183589999998276,
+ 1.139224000000013,
+ 1.3289250000000266,
+ 1.375887000000148,
+ 1.625678999999991
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "wasm",
+ "packageName": "@taffyjs/wasm",
+ "hz": 194.17004093621247,
+ "meanMs": 5.150125092307694,
+ "medianMs": 5.043114999999943,
+ "minMs": 4.7223639999999705,
+ "maxMs": 7.83447799999999,
+ "p75Ms": 5.202242999999953,
+ "p99Ms": 7.033620000000042,
+ "maxRelativeMarginOfError": 1.1526826859680035,
+ "roundCount": 1,
+ "sampleCount": 195,
+ "rounds": [
+ {
+ "hz": 194.17004093621247,
+ "meanMs": 5.150125092307694,
+ "medianMs": 5.043114999999943,
+ "minMs": 4.7223639999999705,
+ "maxMs": 7.83447799999999,
+ "p75Ms": 5.202242999999953,
+ "p99Ms": 7.033620000000042,
+ "relativeMarginOfError": 1.1526826859680035,
+ "sampleCount": 195,
+ "samplesMs": [
+ 4.7223639999999705,
+ 4.738860000000045,
+ 4.755837000000042,
+ 4.765303000000017,
+ 4.784862999999973,
+ 4.789829000000054,
+ 4.796432999999979,
+ 4.802962999999977,
+ 4.805678999999827,
+ 4.814798999999994,
+ 4.817465999999968,
+ 4.823079999999891,
+ 4.824974999999995,
+ 4.8321750000000065,
+ 4.834547000000157,
+ 4.834847000000082,
+ 4.8350240000000895,
+ 4.836457999999993,
+ 4.839754999999968,
+ 4.853571999999986,
+ 4.85544699999997,
+ 4.8562709999999925,
+ 4.8574630000000525,
+ 4.85821599999997,
+ 4.859621999999945,
+ 4.862579000000096,
+ 4.864422999999988,
+ 4.8689580000000205,
+ 4.870898999999895,
+ 4.870932000000039,
+ 4.871171000000004,
+ 4.871713999999997,
+ 4.872250000000122,
+ 4.872667999999976,
+ 4.873929000000089,
+ 4.874634000000015,
+ 4.875238000000081,
+ 4.877825999999914,
+ 4.87839299999996,
+ 4.878446000000054,
+ 4.879558999999972,
+ 4.886590000000069,
+ 4.889275999999995,
+ 4.89085,
+ 4.898300000000063,
+ 4.901536000000078,
+ 4.905545999999958,
+ 4.909142999999972,
+ 4.909257000000025,
+ 4.9135190000001785,
+ 4.915627000000086,
+ 4.916772000000037,
+ 4.929083999999989,
+ 4.929644000000053,
+ 4.93453599999998,
+ 4.936423999999988,
+ 4.941037000000051,
+ 4.945220000000063,
+ 4.945327999999904,
+ 4.945447000000058,
+ 4.946670999999924,
+ 4.950776000000019,
+ 4.953091000000086,
+ 4.954815000000053,
+ 4.954985999999963,
+ 4.963117000000011,
+ 4.963321000000178,
+ 4.963557000000037,
+ 4.966565999999943,
+ 4.967469999999821,
+ 4.967939000000001,
+ 4.9682900000000245,
+ 4.9698379999999815,
+ 4.971999000000096,
+ 4.977470000000039,
+ 4.980086000000028,
+ 4.981397000000015,
+ 4.98249799999985,
+ 4.984552000000008,
+ 4.987638999999945,
+ 4.989740999999981,
+ 4.991117999999915,
+ 4.9915039999999635,
+ 4.992146000000048,
+ 4.99681099999998,
+ 4.997421999999915,
+ 5.011927999999898,
+ 5.015363999999863,
+ 5.01553100000001,
+ 5.017074999999977,
+ 5.017157999999881,
+ 5.0226100000001,
+ 5.029961999999955,
+ 5.031366999999932,
+ 5.036963999999898,
+ 5.041066999999998,
+ 5.04153400000007,
+ 5.043114999999943,
+ 5.04739799999993,
+ 5.0535140000001775,
+ 5.056111000000101,
+ 5.059708999999998,
+ 5.060384999999997,
+ 5.063972000000035,
+ 5.064788000000021,
+ 5.068627000000106,
+ 5.069524999999999,
+ 5.070458000000144,
+ 5.074955000000045,
+ 5.075507000000016,
+ 5.076124999999934,
+ 5.078190000000063,
+ 5.079627999999957,
+ 5.0833900000000085,
+ 5.084294999999997,
+ 5.085217999999941,
+ 5.0858109999999215,
+ 5.086727999999994,
+ 5.087604000000056,
+ 5.092832000000044,
+ 5.0951769999999215,
+ 5.095396999999991,
+ 5.105606999999964,
+ 5.108136000000059,
+ 5.108923000000004,
+ 5.1114789999999175,
+ 5.121105,
+ 5.1252379999999675,
+ 5.130755000000136,
+ 5.132232999999815,
+ 5.133367999999905,
+ 5.139731000000097,
+ 5.147283000000016,
+ 5.148028999999951,
+ 5.152061999999887,
+ 5.165782000000036,
+ 5.16700800000001,
+ 5.170197000000144,
+ 5.1735620000001745,
+ 5.174340999999913,
+ 5.176759000000061,
+ 5.177532999999983,
+ 5.179735999999934,
+ 5.191507000000001,
+ 5.199497000000065,
+ 5.200775999999905,
+ 5.202242999999953,
+ 5.203817000000072,
+ 5.2125109999999495,
+ 5.235934000000043,
+ 5.236186000000089,
+ 5.2425929999999425,
+ 5.242613000000006,
+ 5.254586999999958,
+ 5.257166000000041,
+ 5.257396999999855,
+ 5.263515000000098,
+ 5.2684430000000475,
+ 5.278732999999988,
+ 5.285225999999966,
+ 5.303830999999946,
+ 5.316609000000028,
+ 5.318118000000027,
+ 5.323560999999984,
+ 5.345451999999966,
+ 5.346114,
+ 5.374583999999913,
+ 5.393411000000015,
+ 5.396051,
+ 5.396300999999994,
+ 5.39718199999993,
+ 5.402481999999964,
+ 5.415128999999979,
+ 5.417226000000028,
+ 5.449178999999958,
+ 5.457994999999983,
+ 5.474970999999982,
+ 5.484773000000132,
+ 5.491839000000027,
+ 5.594477999999981,
+ 5.767610999999988,
+ 5.911743000000001,
+ 6.05618400000003,
+ 6.1546169999999165,
+ 6.155422000000044,
+ 6.1747819999999365,
+ 6.188961000000063,
+ 6.195227000000159,
+ 6.196648999999979,
+ 6.218931999999995,
+ 6.459691000000021,
+ 6.614718000000039,
+ 6.894418999999971,
+ 7.033620000000042,
+ 7.83447799999999
+ ]
+ }
+ ]
+ },
{
- "id": "node",
- "label": "Native Node",
- "packageName": "@taffyjs/node"
+ "targetId": "taffy-yoga",
+ "packageName": "@taffyjs/yoga",
+ "hz": 151.2807386026477,
+ "meanMs": 6.6102268486842135,
+ "medianMs": 6.328675500000003,
+ "minMs": 6.073802000000114,
+ "maxMs": 9.081173999999919,
+ "p75Ms": 6.82367099999999,
+ "p99Ms": 9.057096999999999,
+ "maxRelativeMarginOfError": 1.4610063806862454,
+ "roundCount": 1,
+ "sampleCount": 152,
+ "rounds": [
+ {
+ "hz": 151.2807386026477,
+ "meanMs": 6.6102268486842135,
+ "medianMs": 6.328675500000003,
+ "minMs": 6.073802000000114,
+ "maxMs": 9.081173999999919,
+ "p75Ms": 6.82367099999999,
+ "p99Ms": 9.057096999999999,
+ "relativeMarginOfError": 1.4610063806862454,
+ "sampleCount": 152,
+ "samplesMs": [
+ 6.073802000000114,
+ 6.103878000000009,
+ 6.103896000000077,
+ 6.106673999999998,
+ 6.109388999999965,
+ 6.118118999999979,
+ 6.122998999999936,
+ 6.123352999999952,
+ 6.125596999999971,
+ 6.129498000000012,
+ 6.131440999999995,
+ 6.132990999999947,
+ 6.1363529999999855,
+ 6.139525000000049,
+ 6.142530000000079,
+ 6.143164999999954,
+ 6.148095000000012,
+ 6.150799000000006,
+ 6.153385999999955,
+ 6.154628000000002,
+ 6.157719000000043,
+ 6.159830000000056,
+ 6.163829000000078,
+ 6.168738000000076,
+ 6.172807999999975,
+ 6.1734989999999925,
+ 6.17755000000011,
+ 6.178583000000003,
+ 6.1811440000000175,
+ 6.182649000000083,
+ 6.183309000000008,
+ 6.1839769999999135,
+ 6.184889999999996,
+ 6.185130000000072,
+ 6.191235000000006,
+ 6.1927650000000085,
+ 6.192933000000039,
+ 6.197515000000067,
+ 6.199298999999996,
+ 6.202019999999948,
+ 6.202609999999993,
+ 6.204790000000003,
+ 6.205901999999924,
+ 6.212481000000025,
+ 6.212696000000051,
+ 6.215562999999975,
+ 6.226669000000015,
+ 6.2271709999999985,
+ 6.228860000000054,
+ 6.233406999999943,
+ 6.234825999999998,
+ 6.236770999999862,
+ 6.2379700000000184,
+ 6.240348999999924,
+ 6.248681000000033,
+ 6.2524879999998575,
+ 6.253398999999945,
+ 6.253907999999967,
+ 6.255734000000075,
+ 6.256198999999981,
+ 6.258150000000114,
+ 6.259310000000028,
+ 6.261091999999962,
+ 6.262669999999957,
+ 6.27201100000002,
+ 6.275074000000018,
+ 6.27972699999998,
+ 6.284330000000182,
+ 6.286841000000095,
+ 6.30012499999998,
+ 6.301514999999995,
+ 6.306275000000028,
+ 6.318981000000008,
+ 6.321175000000039,
+ 6.3240260000000035,
+ 6.325639999999964,
+ 6.331711000000041,
+ 6.339567999999986,
+ 6.344328999999902,
+ 6.352844000000005,
+ 6.356385000000046,
+ 6.359486000000061,
+ 6.361590999999976,
+ 6.375626000000011,
+ 6.377273999999943,
+ 6.384515999999962,
+ 6.405540999999971,
+ 6.4268449999999575,
+ 6.430964000000017,
+ 6.45093600000007,
+ 6.50190299999997,
+ 6.543309999999906,
+ 6.554519999999968,
+ 6.571658999999954,
+ 6.583438000000001,
+ 6.602268999999978,
+ 6.608408000000054,
+ 6.638085000000046,
+ 6.63876300000004,
+ 6.658404000000019,
+ 6.661410999999816,
+ 6.662953000000016,
+ 6.668115,
+ 6.736658000000034,
+ 6.73789499999998,
+ 6.743257999999969,
+ 6.77505599999995,
+ 6.781735000000026,
+ 6.787036000000057,
+ 6.788367999999991,
+ 6.792699999999968,
+ 6.801799000000074,
+ 6.803074000000038,
+ 6.82367099999999,
+ 6.83062300000006,
+ 6.831035000000043,
+ 6.834597000000031,
+ 6.841134000000011,
+ 6.846911000000034,
+ 6.869853999999918,
+ 6.87236699999994,
+ 6.876526000000013,
+ 6.895622000000003,
+ 6.902050000000031,
+ 6.99341000000004,
+ 7.023698000000195,
+ 7.033653999999956,
+ 7.057510000000093,
+ 7.132723000000055,
+ 7.1487769999999955,
+ 7.26577999999995,
+ 7.280704000000014,
+ 7.322941000000014,
+ 7.3262339999999995,
+ 7.48813100000001,
+ 7.503614999999968,
+ 7.521869000000038,
+ 7.55675999999994,
+ 7.563313999999991,
+ 7.591066999999953,
+ 7.615447000000017,
+ 7.674350000000004,
+ 7.708002999999962,
+ 7.715851000000043,
+ 7.935140000000047,
+ 7.99088299999994,
+ 8.096234999999979,
+ 8.11625799999996,
+ 8.170466000000033,
+ 8.963611000000014,
+ 9.057096999999999,
+ 9.081173999999919
+ ]
+ }
+ ]
},
{
- "id": "wasm",
- "label": "WASI Wasm",
- "packageName": "@taffyjs/wasm"
+ "targetId": "taffy-yoga-wasm",
+ "packageName": "@taffyjs/yoga-wasm",
+ "hz": 22.429780432187787,
+ "meanMs": 44.58358399999998,
+ "medianMs": 44.20707699999991,
+ "minMs": 43.596545000000106,
+ "maxMs": 49.87005399999998,
+ "p75Ms": 44.59873500000003,
+ "p99Ms": 49.87005399999998,
+ "maxRelativeMarginOfError": 1.3504269620323466,
+ "roundCount": 1,
+ "sampleCount": 23,
+ "rounds": [
+ {
+ "hz": 22.429780432187787,
+ "meanMs": 44.58358399999998,
+ "medianMs": 44.20707699999991,
+ "minMs": 43.596545000000106,
+ "maxMs": 49.87005399999998,
+ "p75Ms": 44.59873500000003,
+ "p99Ms": 49.87005399999998,
+ "relativeMarginOfError": 1.3504269620323466,
+ "sampleCount": 23,
+ "samplesMs": [
+ 43.596545000000106,
+ 43.65909499999998,
+ 43.84310899999991,
+ 43.8700409999999,
+ 43.90569900000014,
+ 43.917058,
+ 44.03207099999986,
+ 44.037898999999925,
+ 44.06204600000001,
+ 44.17293700000005,
+ 44.207010999999966,
+ 44.20707699999991,
+ 44.26784100000009,
+ 44.291116999999986,
+ 44.3073149999999,
+ 44.325820999999905,
+ 44.341392999999925,
+ 44.59873500000003,
+ 44.683923999999934,
+ 44.76109800000006,
+ 44.869755000000055,
+ 47.59479099999999,
+ 49.87005399999998
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "yoga-layout",
+ "packageName": "yoga-layout",
+ "hz": 2399.9102289579837,
+ "meanMs": 0.41668225249999863,
+ "medianMs": 0.40050100000001976,
+ "minMs": 0.38960999999994783,
+ "maxMs": 0.9092749999999796,
+ "p75Ms": 0.41576999999995223,
+ "p99Ms": 0.5698409999999967,
+ "maxRelativeMarginOfError": 0.3659666984722669,
+ "roundCount": 1,
+ "sampleCount": 2400,
+ "rounds": [
+ {
+ "hz": 2399.9102289579837,
+ "meanMs": 0.41668225249999863,
+ "medianMs": 0.40050100000001976,
+ "minMs": 0.38960999999994783,
+ "maxMs": 0.9092749999999796,
+ "p75Ms": 0.41576999999995223,
+ "p99Ms": 0.5698409999999967,
+ "relativeMarginOfError": 0.3659666984722669,
+ "sampleCount": 2400,
+ "samplesMs": [
+ 0.38960999999994783,
+ 0.3912470000000212,
+ 0.3915100000000393,
+ 0.39182099999993625,
+ 0.3928170000001501,
+ 0.3930150000001049,
+ 0.39307099999996353,
+ 0.39308200000004945,
+ 0.3930960000000141,
+ 0.3935109999999895,
+ 0.39355000000000473,
+ 0.39358500000003005,
+ 0.39359699999999975,
+ 0.39364499999999225,
+ 0.39379700000006324,
+ 0.39388199999984863,
+ 0.3938830000000735,
+ 0.39388499999995474,
+ 0.3939110000001165,
+ 0.3939190000000963,
+ 0.3939430000000357,
+ 0.3939539999998942,
+ 0.39395999999999276,
+ 0.3939629999999852,
+ 0.3939980000000105,
+ 0.3940170000000762,
+ 0.3940189999998438,
+ 0.3940619999999626,
+ 0.39418399999999565,
+ 0.3941939999999704,
+ 0.39419599999996535,
+ 0.39421600000002854,
+ 0.39422000000013213,
+ 0.39431500000000597,
+ 0.39434300000016265,
+ 0.39434799999980896,
+ 0.3943689999999833,
+ 0.3943729999999732,
+ 0.3943770000000768,
+ 0.3943930000000364,
+ 0.3943980000000238,
+ 0.3944260000000668,
+ 0.39442699999995057,
+ 0.39442799999983436,
+ 0.39442800000006173,
+ 0.39444000000003143,
+ 0.3944410000000289,
+ 0.3944840000001477,
+ 0.3944920000001275,
+ 0.3945009999999911,
+ 0.39451099999996586,
+ 0.3945340000000215,
+ 0.3945499999999811,
+ 0.39456300000006195,
+ 0.394568000000163,
+ 0.39457100000004175,
+ 0.3945840000001226,
+ 0.3945929999999862,
+ 0.39461199999993823,
+ 0.3946300000000065,
+ 0.39463999999998123,
+ 0.39465400000005957,
+ 0.3946650000000318,
+ 0.3946889999999712,
+ 0.3946929999999611,
+ 0.39469499999995605,
+ 0.39470300000004954,
+ 0.3947239999999965,
+ 0.3947339999999713,
+ 0.39474700000005214,
+ 0.3947659999998905,
+ 0.3947659999998905,
+ 0.39477499999998145,
+ 0.3947920000000522,
+ 0.3948199999999815,
+ 0.39482199999997647,
+ 0.39483100000006743,
+ 0.39485100000001694,
+ 0.39485100000001694,
+ 0.3948519999999007,
+ 0.3948530000000119,
+ 0.39486599999997907,
+ 0.3948729999999614,
+ 0.3948929999999109,
+ 0.3948959999999033,
+ 0.39490299999999934,
+ 0.39490699999998924,
+ 0.39492299999994884,
+ 0.3949250000000575,
+ 0.3949289999999337,
+ 0.3949320000000398,
+ 0.3949329999999236,
+ 0.394935999999916,
+ 0.39494299999989835,
+ 0.3949440000000095,
+ 0.3949479999999994,
+ 0.39495700000020406,
+ 0.3949720000000525,
+ 0.3949759999999287,
+ 0.39497800000003735,
+ 0.39498600000001716,
+ 0.394992000000002,
+ 0.39499899999998433,
+ 0.3949999999999818,
+ 0.39500100000009297,
+ 0.3950239999999212,
+ 0.3950279999999111,
+ 0.3950329999998985,
+ 0.39503899999999703,
+ 0.39503899999999703,
+ 0.3950399999999945,
+ 0.3950510000000804,
+ 0.3950569999999516,
+ 0.3950599999998303,
+ 0.3950640000000476,
+ 0.39506700000004,
+ 0.3950729999999112,
+ 0.395087999999987,
+ 0.39509499999996933,
+ 0.39510699999993903,
+ 0.39511000000004515,
+ 0.39512200000001485,
+ 0.3951230000000123,
+ 0.39512999999999465,
+ 0.39513799999997445,
+ 0.3951470000000654,
+ 0.3951489999999467,
+ 0.395151000000169,
+ 0.3951640000000225,
+ 0.3951789999999846,
+ 0.3951830000000882,
+ 0.39518699999996443,
+ 0.39519000000007054,
+ 0.39519899999993413,
+ 0.39520100000004277,
+ 0.3952039999999215,
+ 0.39521800000011353,
+ 0.3952209999999923,
+ 0.3952229999999872,
+ 0.3952430000000504,
+ 0.3952430000001641,
+ 0.39524600000004284,
+ 0.3952470000000403,
+ 0.3952520000000277,
+ 0.39526200000000244,
+ 0.3952669999999898,
+ 0.39527399999997215,
+ 0.3952759999999671,
+ 0.3952769999998509,
+ 0.3953000000001339,
+ 0.395300999999904,
+ 0.39530599999989136,
+ 0.39531300000010106,
+ 0.3953160000000935,
+ 0.3953200000000834,
+ 0.3953229999999621,
+ 0.39532600000006823,
+ 0.395326999999952,
+ 0.3953270000000657,
+ 0.39533400000004804,
+ 0.395336000000043,
+ 0.3953400000000329,
+ 0.39534200000002784,
+ 0.3953520000000026,
+ 0.3953710000000683,
+ 0.39537299999994957,
+ 0.39537399999994705,
+ 0.39538100000004306,
+ 0.3953839999999218,
+ 0.39538500000003296,
+ 0.3953879999999117,
+ 0.3953880000000254,
+ 0.39539400000001024,
+ 0.39539700000000266,
+ 0.3954040000000987,
+ 0.3954109999999673,
+ 0.39541299999996227,
+ 0.3954149999999572,
+ 0.3954160000000684,
+ 0.39542200000005323,
+ 0.39542600000004313,
+ 0.3954280000000381,
+ 0.39543299999991177,
+ 0.39543300000002546,
+ 0.39544100000011895,
+ 0.3954439999999977,
+ 0.3954470000001038,
+ 0.3954519999999775,
+ 0.39545799999996234,
+ 0.39546599999994214,
+ 0.3954670000000533,
+ 0.3954729999998108,
+ 0.3954760000000306,
+ 0.39548200000001543,
+ 0.39548500000000786,
+ 0.39548600000000533,
+ 0.39549300000021503,
+ 0.39549399999998514,
+ 0.39549799999997504,
+ 0.39550099999996746,
+ 0.3955029999999624,
+ 0.3955069999999523,
+ 0.39552200000002813,
+ 0.3955229999999119,
+ 0.39552499999990687,
+ 0.39552500000002055,
+ 0.39552600000001803,
+ 0.3955270000001292,
+ 0.39553399999999783,
+ 0.3955429999998614,
+ 0.3955479999999625,
+ 0.39556400000014946,
+ 0.3955680000000257,
+ 0.39558199999987664,
+ 0.39558899999997266,
+ 0.3955940000000737,
+ 0.39559699999995246,
+ 0.39559699999995246,
+ 0.3956040000000485,
+ 0.3956060000000434,
+ 0.3956119999999146,
+ 0.39561699999990196,
+ 0.3956180000000131,
+ 0.3956190000000106,
+ 0.39562599999999293,
+ 0.39563299999986157,
+ 0.39564199999995253,
+ 0.3956620000000157,
+ 0.39566899999999805,
+ 0.3956799999999703,
+ 0.39568000000008396,
+ 0.39568199999996523,
+ 0.39568599999995513,
+ 0.3956980000000385,
+ 0.3956980000000385,
+ 0.3956990000001497,
+ 0.3956990000001497,
+ 0.395710999999892,
+ 0.3957120000000032,
+ 0.39571699999999055,
+ 0.395727000000079,
+ 0.39572900000007394,
+ 0.3957359999999426,
+ 0.3957510000000184,
+ 0.3957550000000083,
+ 0.39575600000011946,
+ 0.39576000000010936,
+ 0.39577200000007906,
+ 0.39577299999996285,
+ 0.3957749999999578,
+ 0.3957759999999553,
+ 0.39578099999994265,
+ 0.39578199999982644,
+ 0.39578800000003866,
+ 0.39579700000012963,
+ 0.3957980000000134,
+ 0.3957990000001246,
+ 0.3958029999998871,
+ 0.3958030000000008,
+ 0.3958059999999932,
+ 0.39581300000008923,
+ 0.3958149999998568,
+ 0.39583700000002864,
+ 0.3958390000000236,
+ 0.39584099999990485,
+ 0.3958549999999832,
+ 0.39586599999984173,
+ 0.3958659999999554,
+ 0.39586899999994785,
+ 0.39587600000004386,
+ 0.39588000000003376,
+ 0.39588500000002114,
+ 0.39589300000000094,
+ 0.39589699999987715,
+ 0.3958979999999883,
+ 0.3959019999999782,
+ 0.39590899999984686,
+ 0.39590900000007423,
+ 0.3959139999999479,
+ 0.39591599999994287,
+ 0.39591700000005403,
+ 0.3959270000000288,
+ 0.39592800000013995,
+ 0.3959340000001248,
+ 0.395938000000001,
+ 0.39594899999997324,
+ 0.3959539999999606,
+ 0.39595999999994547,
+ 0.39596099999994294,
+ 0.3959700000000339,
+ 0.39598000000000866,
+ 0.39598499999999603,
+ 0.3959859999999935,
+ 0.39598799999998846,
+ 0.39598899999987225,
+ 0.3959930000000895,
+ 0.39599599999996826,
+ 0.396005999999943,
+ 0.396005999999943,
+ 0.3960090000000491,
+ 0.3960110000000441,
+ 0.3960139999999228,
+ 0.3960190000000239,
+ 0.39602100000001883,
+ 0.39602400000001126,
+ 0.39603199999999106,
+ 0.396033999999986,
+ 0.3960340000000997,
+ 0.39603999999997086,
+ 0.39604400000007445,
+ 0.39604499999995824,
+ 0.39604899999994814,
+ 0.39605199999994056,
+ 0.39605200000005425,
+ 0.3960550000000467,
+ 0.39605699999992794,
+ 0.39606099999991784,
+ 0.396062000000029,
+ 0.39606799999990017,
+ 0.39608799999996336,
+ 0.3960890000000745,
+ 0.3961030000000392,
+ 0.39610800000002655,
+ 0.3961140000000114,
+ 0.3961150000000089,
+ 0.3961170000000038,
+ 0.3961189999999988,
+ 0.39612099999999373,
+ 0.3961379999999508,
+ 0.39614000000005944,
+ 0.39614899999992303,
+ 0.39615100000003167,
+ 0.39615100000003167,
+ 0.3961530000001403,
+ 0.39615600000001905,
+ 0.39616099999989274,
+ 0.3961689999999862,
+ 0.39617199999997865,
+ 0.3961729999999761,
+ 0.39617599999996855,
+ 0.3961890000000494,
+ 0.3961970000000292,
+ 0.396197999999913,
+ 0.39619900000002417,
+ 0.39620300000001407,
+ 0.3962100000001101,
+ 0.39621199999999135,
+ 0.3962129999999888,
+ 0.3962139999999863,
+ 0.39622000000008484,
+ 0.3962249999999585,
+ 0.3962349999999333,
+ 0.39623600000004444,
+ 0.39623699999992823,
+ 0.3962420000000293,
+ 0.3962429999999131,
+ 0.39625299999988783,
+ 0.39625900000010006,
+ 0.39625999999998385,
+ 0.39626099999986764,
+ 0.3962649999999712,
+ 0.3962709999998424,
+ 0.39628000000004704,
+ 0.3962850000000344,
+ 0.3962850000000344,
+ 0.39629199999990306,
+ 0.39629899999999907,
+ 0.396300999999994,
+ 0.3963060000000951,
+ 0.39630799999997635,
+ 0.39630800000009003,
+ 0.3963129999999637,
+ 0.39632000000005974,
+ 0.3963269999999284,
+ 0.3963300000000345,
+ 0.3963370000000168,
+ 0.39634000000000924,
+ 0.396342999999888,
+ 0.396342999999888,
+ 0.3963459999999941,
+ 0.3963459999999941,
+ 0.39634899999987283,
+ 0.3963539999999739,
+ 0.39635599999996884,
+ 0.39635699999985263,
+ 0.39635999999995875,
+ 0.39635999999995875,
+ 0.3963610000000699,
+ 0.3963649999999461,
+ 0.39637100000004466,
+ 0.39637100000004466,
+ 0.3963779999999133,
+ 0.39638000000002194,
+ 0.3963810000000194,
+ 0.3963820000001306,
+ 0.39638400000001184,
+ 0.3963929999999891,
+ 0.3963939999999866,
+ 0.39640299999996387,
+ 0.39640700000018114,
+ 0.39642300000014075,
+ 0.39642400000002453,
+ 0.3964309999998932,
+ 0.3964330000000018,
+ 0.39645599999994374,
+ 0.3964570000000549,
+ 0.3964650000000347,
+ 0.39646700000002966,
+ 0.39647200000001703,
+ 0.3964819999999918,
+ 0.3964849999999842,
+ 0.39648799999997664,
+ 0.39649100000008275,
+ 0.39649500000007265,
+ 0.3964969999999539,
+ 0.39649900000006255,
+ 0.39650399999993624,
+ 0.3965049999999337,
+ 0.3965100000000348,
+ 0.39651200000002973,
+ 0.3965180000000146,
+ 0.3965249999998832,
+ 0.3965289999999868,
+ 0.3965330000000904,
+ 0.3965370000000803,
+ 0.3965410000000702,
+ 0.3965429999998378,
+ 0.39654300000006515,
+ 0.3965440000000626,
+ 0.3965449999998327,
+ 0.3965450000000601,
+ 0.39654900000005,
+ 0.39655100000004495,
+ 0.3965539999999237,
+ 0.3965579999999136,
+ 0.3965579999999136,
+ 0.3965600000001359,
+ 0.39657099999999446,
+ 0.39657599999998183,
+ 0.3965769999999793,
+ 0.39657800000009047,
+ 0.3965809999999692,
+ 0.3965849999999591,
+ 0.3965849999999591,
+ 0.3965859999998429,
+ 0.3965940000000501,
+ 0.396596000000045,
+ 0.3966000000000349,
+ 0.3966020000000299,
+ 0.3966040000000248,
+ 0.3966040000000248,
+ 0.3966050000000223,
+ 0.3966080000000147,
+ 0.3966090000001259,
+ 0.39661099999989347,
+ 0.3966120000000046,
+ 0.3966209999998682,
+ 0.39662300000009054,
+ 0.39662699999985307,
+ 0.3966290000000754,
+ 0.39663199999995413,
+ 0.3966369999999415,
+ 0.3966440000000375,
+ 0.39664700000002995,
+ 0.39664799999991374,
+ 0.3966490000000249,
+ 0.3966500000000224,
+ 0.3966530000000148,
+ 0.39665500000000975,
+ 0.3966560000001209,
+ 0.39665899999999965,
+ 0.39666299999998955,
+ 0.39666399999987334,
+ 0.39667199999996683,
+ 0.39667499999995925,
+ 0.39667999999994663,
+ 0.39669000000003507,
+ 0.39669099999991886,
+ 0.39669200000003,
+ 0.39669400000002497,
+ 0.39669400000002497,
+ 0.3967000000000098,
+ 0.3967020000000048,
+ 0.3967020000000048,
+ 0.39670699999987846,
+ 0.3967159999999694,
+ 0.39672700000005534,
+ 0.3967289999998229,
+ 0.3967299999999341,
+ 0.39673099999993156,
+ 0.39673400000003767,
+ 0.39673800000002757,
+ 0.39673899999979767,
+ 0.39673900000002504,
+ 0.3967419999999038,
+ 0.39674700000000485,
+ 0.3967560000000958,
+ 0.3967569999999796,
+ 0.3967610000000832,
+ 0.39676700000006804,
+ 0.3967720000000554,
+ 0.39677499999993415,
+ 0.3967770000001565,
+ 0.3967890000000125,
+ 0.39679399999999987,
+ 0.3967999999999847,
+ 0.3967999999999847,
+ 0.39680700000008073,
+ 0.39683199999990393,
+ 0.3968330000000151,
+ 0.39684199999999237,
+ 0.3968439999999873,
+ 0.3968439999999873,
+ 0.39685099999996964,
+ 0.3968560000000707,
+ 0.39686200000005556,
+ 0.39686300000005303,
+ 0.396865000000048,
+ 0.39687000000003536,
+ 0.39687000000003536,
+ 0.3968730000000278,
+ 0.3968770000000177,
+ 0.39687899999989895,
+ 0.3968810000000076,
+ 0.39688300000000254,
+ 0.3968850000001112,
+ 0.39689499999985856,
+ 0.3968999999999596,
+ 0.39691100000004553,
+ 0.3969119999999293,
+ 0.3969179999999142,
+ 0.3969200000001365,
+ 0.39692200000013145,
+ 0.39692300000001524,
+ 0.39693800000009105,
+ 0.39694599999995717,
+ 0.3969560000000456,
+ 0.39695899999992434,
+ 0.39695900000003803,
+ 0.3969680000000153,
+ 0.3969719999998915,
+ 0.39697499999999764,
+ 0.3969759999999951,
+ 0.3969850000000861,
+ 0.39699099999995724,
+ 0.3969929999999522,
+ 0.39699499999983345,
+ 0.39699800000005325,
+ 0.3969999999999345,
+ 0.3970010000000457,
+ 0.3970040000000381,
+ 0.39700999999990927,
+ 0.39701399999989917,
+ 0.3970170000000053,
+ 0.3970240000001013,
+ 0.39703800000006595,
+ 0.39703899999994974,
+ 0.3970409999999447,
+ 0.397057000000018,
+ 0.39706200000000536,
+ 0.39706900000010137,
+ 0.39706900000010137,
+ 0.3970710000000963,
+ 0.39707800000007865,
+ 0.39708200000006855,
+ 0.3970889999999372,
+ 0.3970950000000357,
+ 0.3970950000000357,
+ 0.3970960000000332,
+ 0.3971000000001368,
+ 0.3971120000001065,
+ 0.3971199999998589,
+ 0.3971209999999701,
+ 0.3971239999999625,
+ 0.3971280000000661,
+ 0.39713000000006105,
+ 0.397132000000056,
+ 0.397132000000056,
+ 0.39713499999993473,
+ 0.39713800000004085,
+ 0.39713800000004085,
+ 0.3971440000000257,
+ 0.3971470000000181,
+ 0.3971480000000156,
+ 0.39715000000001055,
+ 0.3971569999998792,
+ 0.39716100000009646,
+ 0.39716100000009646,
+ 0.39716599999997015,
+ 0.39716900000007627,
+ 0.3971729999999525,
+ 0.3971759999999449,
+ 0.3971760000000586,
+ 0.39718500000003587,
+ 0.3971879999999146,
+ 0.39718900000002577,
+ 0.39718900000002577,
+ 0.39719099999990704,
+ 0.3971910000000207,
+ 0.397192999999902,
+ 0.3971950000000106,
+ 0.3971990000000005,
+ 0.39720200000010664,
+ 0.3972029999999904,
+ 0.3972069999999803,
+ 0.3972149999999601,
+ 0.39722100000005867,
+ 0.3972239999999374,
+ 0.397228000000041,
+ 0.39723400000002584,
+ 0.39723700000001827,
+ 0.39723899999989953,
+ 0.3972400000000107,
+ 0.39724100000000817,
+ 0.3972489999998743,
+ 0.39725300000009156,
+ 0.3972559999999703,
+ 0.39726799999994,
+ 0.39727300000004107,
+ 0.39728699999989203,
+ 0.3972880000001169,
+ 0.3972919999999931,
+ 0.39729800000009163,
+ 0.3973049999999603,
+ 0.397307999999839,
+ 0.39730999999983396,
+ 0.3973119999999426,
+ 0.3973160000000462,
+ 0.3973200000000361,
+ 0.39732100000003356,
+ 0.39732200000003104,
+ 0.39732600000002094,
+ 0.3973270000000184,
+ 0.3973279999999022,
+ 0.3973310000000083,
+ 0.3973320000000058,
+ 0.39733400000000074,
+ 0.39733799999999064,
+ 0.39735300000006646,
+ 0.3973549999999477,
+ 0.3973599999999351,
+ 0.39736199999993005,
+ 0.39736200000004374,
+ 0.3973629999999275,
+ 0.39736600000003364,
+ 0.3973679999999149,
+ 0.3973750000000109,
+ 0.3973799999999983,
+ 0.39738099999999577,
+ 0.39739399999996294,
+ 0.3973959999999579,
+ 0.3973999999998341,
+ 0.39740199999982906,
+ 0.39740200000005643,
+ 0.397403999999824,
+ 0.3974039999999377,
+ 0.39740600000004633,
+ 0.3974120000000312,
+ 0.39741400000002614,
+ 0.39741800000001604,
+ 0.39742999999998574,
+ 0.3974309999999832,
+ 0.3974309999999832,
+ 0.3974319999999807,
+ 0.39743499999985943,
+ 0.39743699999996807,
+ 0.39744500000006155,
+ 0.3974510000000464,
+ 0.39745399999992514,
+ 0.39746900000000096,
+ 0.3974719999999934,
+ 0.3974719999999934,
+ 0.3974780000000919,
+ 0.3974830000000793,
+ 0.3974840000000768,
+ 0.3974869999999555,
+ 0.3974879999998393,
+ 0.39748899999995047,
+ 0.39748899999995047,
+ 0.3974900000000616,
+ 0.3975000000000364,
+ 0.39751300000000356,
+ 0.39752599999997074,
+ 0.39752599999997074,
+ 0.39753300000006675,
+ 0.3975359999999455,
+ 0.3975510000000213,
+ 0.397562999999991,
+ 0.3975719999998546,
+ 0.39757299999996576,
+ 0.3975749999999607,
+ 0.3975829999999405,
+ 0.397583999999938,
+ 0.39758500000004915,
+ 0.3975880000000416,
+ 0.3975940000000264,
+ 0.3975959999999077,
+ 0.3975980000000163,
+ 0.3975980000000163,
+ 0.3976030000000037,
+ 0.3976109999999835,
+ 0.3976110000000972,
+ 0.3976150000000871,
+ 0.39762199999995573,
+ 0.39762199999995573,
+ 0.3976229999998395,
+ 0.3976229999999532,
+ 0.39762599999994563,
+ 0.3976279999999406,
+ 0.3976300000000492,
+ 0.3976350000000366,
+ 0.3976350000000366,
+ 0.3976380000001427,
+ 0.3976390000000265,
+ 0.397640000000024,
+ 0.39764100000002145,
+ 0.3976539999999886,
+ 0.3976700000000619,
+ 0.39767799999992803,
+ 0.39768100000003415,
+ 0.39768900000001395,
+ 0.3976920000000064,
+ 0.3976949999998851,
+ 0.3976959999999963,
+ 0.3976979999999912,
+ 0.3976999999999862,
+ 0.397705999999971,
+ 0.397707999999966,
+ 0.39770899999996345,
+ 0.3977100000000746,
+ 0.39771700000005694,
+ 0.3977300000000241,
+ 0.3977390000000014,
+ 0.3977439999999888,
+ 0.39774400000010246,
+ 0.39774400000010246,
+ 0.39774899999997615,
+ 0.3977519999999686,
+ 0.397754999999961,
+ 0.3977550000001884,
+ 0.3977589999999509,
+ 0.39776099999994585,
+ 0.3977619999999433,
+ 0.3977629999999408,
+ 0.3977630000000545,
+ 0.39776400000005196,
+ 0.39776499999993575,
+ 0.3977700000000368,
+ 0.3977749999999105,
+ 0.3977750000000242,
+ 0.39778000000001157,
+ 0.397783000000004,
+ 0.3977859999999964,
+ 0.39779200000009496,
+ 0.3977939999999762,
+ 0.3978099999999358,
+ 0.3978309999999965,
+ 0.39783299999999144,
+ 0.39785100000017337,
+ 0.39785699999993085,
+ 0.39785799999981464,
+ 0.39786099999992075,
+ 0.39786499999991065,
+ 0.3978710000000092,
+ 0.3978710000000092,
+ 0.39787599999999657,
+ 0.3978779999999915,
+ 0.397878999999989,
+ 0.39788099999998394,
+ 0.39788499999997384,
+ 0.3978899999999612,
+ 0.3978910000000724,
+ 0.39789300000006733,
+ 0.39789699999994355,
+ 0.3978989999999385,
+ 0.3979020000000446,
+ 0.39790900000002694,
+ 0.3979099999999107,
+ 0.3979099999999107,
+ 0.3979100000000244,
+ 0.3979150000000118,
+ 0.3979150000000118,
+ 0.39791700000000674,
+ 0.3979190000000017,
+ 0.3979220000001078,
+ 0.3979390000000649,
+ 0.39794099999994614,
+ 0.39794500000004973,
+ 0.3979490000001533,
+ 0.3979510000000346,
+ 0.39796899999998914,
+ 0.3979709999999841,
+ 0.3979789999999639,
+ 0.3979940000001534,
+ 0.39801199999999426,
+ 0.3980149999999867,
+ 0.3980189999999766,
+ 0.39802000000008775,
+ 0.398021999999969,
+ 0.39802499999996144,
+ 0.39803699999993114,
+ 0.39804399999991347,
+ 0.39804800000001705,
+ 0.3980540000000019,
+ 0.3980579999999918,
+ 0.39806300000009287,
+ 0.3980659999999716,
+ 0.3980779999999413,
+ 0.3980820000000449,
+ 0.3980910000000222,
+ 0.3980939999999009,
+ 0.39810799999997926,
+ 0.39810799999997926,
+ 0.3981189999999515,
+ 0.3981199999998353,
+ 0.3981210000000601,
+ 0.3981220000000576,
+ 0.39812899999992624,
+ 0.3981300000000374,
+ 0.39813299999991614,
+ 0.3981339999997999,
+ 0.39813600000002225,
+ 0.39814400000000205,
+ 0.3981449999999995,
+ 0.398145999999997,
+ 0.39814799999999195,
+ 0.39814800000010564,
+ 0.39814899999998943,
+ 0.39815999999996166,
+ 0.3981789999999137,
+ 0.39817900000002737,
+ 0.3981870000000072,
+ 0.398194999999987,
+ 0.39819500000010066,
+ 0.3981989999999769,
+ 0.3982069999999567,
+ 0.39820799999995415,
+ 0.39820800000006784,
+ 0.3982099999999491,
+ 0.398213999999939,
+ 0.3982179999998152,
+ 0.3982189999999264,
+ 0.39823599999999715,
+ 0.3982409999999845,
+ 0.39824300000009316,
+ 0.3982469999999694,
+ 0.398249000000078,
+ 0.39826700000003257,
+ 0.3982690000000275,
+ 0.3982749999998987,
+ 0.39827600000000984,
+ 0.39828699999998207,
+ 0.3982969999999568,
+ 0.3983060000000478,
+ 0.3983060000000478,
+ 0.3983069999999316,
+ 0.39830800000004274,
+ 0.3983140000000276,
+ 0.39831600000002254,
+ 0.39831600000002254,
+ 0.3983259999999973,
+ 0.39832700000010846,
+ 0.3983299999999872,
+ 0.3983329999999796,
+ 0.39833599999997205,
+ 0.39834300000006806,
+ 0.3983489999999392,
+ 0.3983499999999367,
+ 0.39835399999998344,
+ 0.39836700000000747,
+ 0.39836700000000747,
+ 0.39836700000000747,
+ 0.3983699999998862,
+ 0.3983850000000757,
+ 0.39838800000006813,
+ 0.3984049999999115,
+ 0.3984060000000227,
+ 0.39841100000001006,
+ 0.39841499999999996,
+ 0.3984219999999823,
+ 0.39843300000001136,
+ 0.39843599999994694,
+ 0.39843599999994694,
+ 0.39844400000004043,
+ 0.3984459999999217,
+ 0.3984490000000278,
+ 0.3984530000000177,
+ 0.39847199999996974,
+ 0.3984730000000809,
+ 0.39847500000018954,
+ 0.3984779999999546,
+ 0.3984810000001744,
+ 0.3984849999999369,
+ 0.398490000000038,
+ 0.39849100000003546,
+ 0.3984930000000304,
+ 0.3984980000000178,
+ 0.3985169999999698,
+ 0.3985210000000734,
+ 0.3985290000000532,
+ 0.3985369999999193,
+ 0.3985539999999901,
+ 0.3985600000000886,
+ 0.39856699999995726,
+ 0.3985699999999497,
+ 0.39857199999983095,
+ 0.3985720000000583,
+ 0.3985779999999295,
+ 0.39858299999991686,
+ 0.3985940000000028,
+ 0.39859500000000025,
+ 0.39861100000007355,
+ 0.39861199999995733,
+ 0.39861199999995733,
+ 0.3986129999999548,
+ 0.3986139999999523,
+ 0.39861599999994723,
+ 0.3986220000000458,
+ 0.3986220000000458,
+ 0.398625999999922,
+ 0.39862699999991946,
+ 0.3986370000000079,
+ 0.3986380000000054,
+ 0.3986409999999978,
+ 0.3986440000001039,
+ 0.3986499999998614,
+ 0.3986499999999751,
+ 0.39865599999984624,
+ 0.39866200000005847,
+ 0.3986720000000332,
+ 0.39868699999999535,
+ 0.3986970000000838,
+ 0.39869899999985137,
+ 0.3987089999999398,
+ 0.39871000000016465,
+ 0.3987130000000434,
+ 0.3987139999999272,
+ 0.3987369999999828,
+ 0.3987569999999323,
+ 0.39875999999992473,
+ 0.39876699999990706,
+ 0.3987680000000182,
+ 0.3987799999999879,
+ 0.39879100000007384,
+ 0.3987919999999576,
+ 0.3987940000000094,
+ 0.39879500000006374,
+ 0.3988019999999324,
+ 0.3988039999999273,
+ 0.39882199999999557,
+ 0.39882299999999304,
+ 0.398824999999988,
+ 0.3988520000000335,
+ 0.39885400000002846,
+ 0.3988760000002003,
+ 0.3988799999999628,
+ 0.3988850000000639,
+ 0.3988899999999376,
+ 0.3988960000000361,
+ 0.39890600000001086,
+ 0.39891400000010435,
+ 0.3989150000001018,
+ 0.3989159999999856,
+ 0.39892600000007405,
+ 0.39893899999992755,
+ 0.39894199999991997,
+ 0.39894200000003366,
+ 0.398949000000016,
+ 0.39895099999989725,
+ 0.3989630000000943,
+ 0.39897000000007665,
+ 0.39897099999996044,
+ 0.3989800000001651,
+ 0.3989930000000186,
+ 0.3989960000001247,
+ 0.3990009999999984,
+ 0.3990120000000843,
+ 0.39901799999995546,
+ 0.3990249999999378,
+ 0.39903100000003633,
+ 0.3990319999999201,
+ 0.39904599999999846,
+ 0.3990569999999707,
+ 0.3990690000000541,
+ 0.3990750000000389,
+ 0.3990760000001501,
+ 0.39907800000003135,
+ 0.39909099999999853,
+ 0.3990970000000402,
+ 0.39909800000009454,
+ 0.3991000000000895,
+ 0.39910599999996066,
+ 0.3991170000000466,
+ 0.3991280000000188,
+ 0.3991330000000062,
+ 0.3991479999999683,
+ 0.3991510000000744,
+ 0.3991559999999481,
+ 0.39915700000005927,
+ 0.3991770000000088,
+ 0.39918200000010984,
+ 0.39918200000010984,
+ 0.3991829999999936,
+ 0.3991990000000669,
+ 0.39920200000005934,
+ 0.39920699999993303,
+ 0.3992150000000265,
+ 0.3992230000000063,
+ 0.3992240000000038,
+ 0.3992250000000013,
+ 0.39924500000006446,
+ 0.39924599999994825,
+ 0.3992460000001756,
+ 0.3992479999999432,
+ 0.39925400000004174,
+ 0.3992549999999824,
+ 0.39926200000002154,
+ 0.39927800000009483,
+ 0.3992869999999584,
+ 0.3992880000000696,
+ 0.3992889999999534,
+ 0.39929399999994075,
+ 0.39929399999994075,
+ 0.3993030000000317,
+ 0.399304999999913,
+ 0.39931400000000394,
+ 0.39931699999999637,
+ 0.39931799999999384,
+ 0.3993199999999888,
+ 0.39932199999998375,
+ 0.39933000000007723,
+ 0.3993350000000646,
+ 0.39933800000005704,
+ 0.3993390000000545,
+ 0.3993559999998979,
+ 0.3993560000000116,
+ 0.3993629999999939,
+ 0.3993639999999914,
+ 0.3993669999999838,
+ 0.39937299999996867,
+ 0.3993810000000053,
+ 0.3993880000000445,
+ 0.3993950000000268,
+ 0.39939800000001924,
+ 0.39940100000001166,
+ 0.39940999999998894,
+ 0.39942199999995864,
+ 0.39943800000003193,
+ 0.39943800000003193,
+ 0.39943999999997004,
+ 0.39944200000002184,
+ 0.3994430000000193,
+ 0.3994470000000092,
+ 0.3994480000000067,
+ 0.39945299999999406,
+ 0.399454999999989,
+ 0.3994600000000901,
+ 0.3994680000000699,
+ 0.3994709999999486,
+ 0.3994749999999385,
+ 0.39947800000004463,
+ 0.39947800000004463,
+ 0.39948200000003453,
+ 0.39948399999997264,
+ 0.3994840000000295,
+ 0.39950599999997394,
+ 0.3995079999999689,
+ 0.3995140000001811,
+ 0.39951699999994617,
+ 0.39954499999998916,
+ 0.39954599999998663,
+ 0.3995599999999513,
+ 0.3995749999999134,
+ 0.39959399999997913,
+ 0.39959799999996903,
+ 0.3996069999999463,
+ 0.39962100000002465,
+ 0.3996270000000095,
+ 0.39963000000000193,
+ 0.39963299999999435,
+ 0.39963299999999435,
+ 0.3996429999999691,
+ 0.39964499999996406,
+ 0.39964999999995143,
+ 0.3996500000000651,
+ 0.39965200000006007,
+ 0.3996600000000399,
+ 0.3996660000000247,
+ 0.3996680000000197,
+ 0.3996829999999818,
+ 0.39968499999997675,
+ 0.39969699999983277,
+ 0.39970400000004247,
+ 0.3997060000000374,
+ 0.3997160000000122,
+ 0.3997190000000046,
+ 0.399721999999997,
+ 0.3997300000000905,
+ 0.3997350000000779,
+ 0.39974800000004507,
+ 0.39974800000004507,
+ 0.399755999999968,
+ 0.39975600000002487,
+ 0.3997599999999011,
+ 0.39976400000000467,
+ 0.3997670000001108,
+ 0.39976899999999205,
+ 0.3997749999999769,
+ 0.39978700000000345,
+ 0.3997980000000325,
+ 0.39980500000001484,
+ 0.3998079999998936,
+ 0.39982000000009066,
+ 0.3998340000000553,
+ 0.3998380000000452,
+ 0.3998619999999846,
+ 0.3998869999999215,
+ 0.399895000000015,
+ 0.3999059999999872,
+ 0.3999069999999847,
+ 0.39991299999996954,
+ 0.39991300000008323,
+ 0.39993600000002516,
+ 0.39993700000002264,
+ 0.3999390000000176,
+ 0.39994799999999486,
+ 0.3999659999999494,
+ 0.39996900000005553,
+ 0.39997200000004796,
+ 0.39997300000004543,
+ 0.3999829999999065,
+ 0.39998500000001513,
+ 0.3999860000000126,
+ 0.3999870000000101,
+ 0.399991,
+ 0.399991,
+ 0.39999299999999494,
+ 0.40000000000009095,
+ 0.4000029999999697,
+ 0.40001199999994697,
+ 0.4000149999999394,
+ 0.40002500000002783,
+ 0.4000310000000127,
+ 0.40003900000010617,
+ 0.4000579999999445,
+ 0.40007700000001023,
+ 0.4000939999998536,
+ 0.4000980000000709,
+ 0.40010499999993954,
+ 0.4001110000000381,
+ 0.40012500000000273,
+ 0.40012799999999515,
+ 0.4001309999999876,
+ 0.4001309999999876,
+ 0.40013299999998253,
+ 0.40013599999997496,
+ 0.4001370000000861,
+ 0.4001570000000356,
+ 0.4001590000000306,
+ 0.4001610000000255,
+ 0.40016800000000785,
+ 0.4001739999999927,
+ 0.4001970000000483,
+ 0.40020099999992453,
+ 0.400224000000037,
+ 0.40022900000002437,
+ 0.4002290000000812,
+ 0.4002310000000193,
+ 0.400237000000061,
+ 0.4002399999999966,
+ 0.4002629999999954,
+ 0.40028799999993225,
+ 0.4002890000000434,
+ 0.4003029999998944,
+ 0.40030699999999797,
+ 0.40030699999999797,
+ 0.4003170000000864,
+ 0.4003180000000839,
+ 0.40032800000005864,
+ 0.4003299999999399,
+ 0.40033900000003086,
+ 0.40034000000002834,
+ 0.4003410000000258,
+ 0.40034799999989445,
+ 0.40036800000007133,
+ 0.4003709999999501,
+ 0.4003710000000069,
+ 0.4004059999999754,
+ 0.4004090000000815,
+ 0.40041199999996024,
+ 0.40041499999995267,
+ 0.4004330000000209,
+ 0.4004330000000209,
+ 0.40043500000001586,
+ 0.40045199999997294,
+ 0.40045599999984915,
+ 0.40046299999994517,
+ 0.40046800000004623,
+ 0.4004820000000109,
+ 0.4004990000000248,
+ 0.4005030000000147,
+ 0.40051100000005135,
+ 0.40051999999991494,
+ 0.4005209999999124,
+ 0.4005260000000135,
+ 0.40052700000001096,
+ 0.4005520000000615,
+ 0.4005540000000565,
+ 0.40057899999999336,
+ 0.40057899999999336,
+ 0.40057999999999083,
+ 0.4006010000000515,
+ 0.4006099999999151,
+ 0.4006100000000288,
+ 0.4006249999999909,
+ 0.4006500000000415,
+ 0.4006540000000314,
+ 0.400667999999996,
+ 0.4006729999999834,
+ 0.40068300000007184,
+ 0.4006920000000491,
+ 0.40069999999991524,
+ 0.4007060000000138,
+ 0.4007080000000087,
+ 0.40073899999993046,
+ 0.4007440000000315,
+ 0.400745000000029,
+ 0.40075400000000627,
+ 0.4007570000001124,
+ 0.4007579999999962,
+ 0.4007599999999911,
+ 0.40077999999999747,
+ 0.40078600000003917,
+ 0.40079400000001897,
+ 0.40081099999997605,
+ 0.40081900000006954,
+ 0.40082200000006196,
+ 0.4008320000000367,
+ 0.400859999999966,
+ 0.40086299999995845,
+ 0.40086500000001024,
+ 0.40087999999997237,
+ 0.4008959999999888,
+ 0.40090599999996357,
+ 0.40091500000005453,
+ 0.400916000000052,
+ 0.40092600000002676,
+ 0.4009289999999055,
+ 0.4009330000000091,
+ 0.40093799999999646,
+ 0.40094299999998384,
+ 0.40097900000000664,
+ 0.4009800000000041,
+ 0.40099099999997634,
+ 0.4009999999999536,
+ 0.4010030000000029,
+ 0.40100700000004963,
+ 0.40102300000000923,
+ 0.40102300000000923,
+ 0.40102600000000166,
+ 0.40105499999992844,
+ 0.4010549999999853,
+ 0.4010799999998653,
+ 0.40108500000008007,
+ 0.4011090000000195,
+ 0.4011199999999917,
+ 0.40115199999996776,
+ 0.40116599999998925,
+ 0.4011790000000133,
+ 0.40118599999993876,
+ 0.40119000000004235,
+ 0.401196999999911,
+ 0.4012009999999009,
+ 0.4012069999999994,
+ 0.4012079999999969,
+ 0.4012360000000399,
+ 0.4012589999999818,
+ 0.4012679999999591,
+ 0.4012880000000223,
+ 0.40129799999999705,
+ 0.40130099999998947,
+ 0.4013310000000274,
+ 0.4013319999999112,
+ 0.4013479999999845,
+ 0.4013480000000982,
+ 0.40135200000003124,
+ 0.40135299999997187,
+ 0.40135700000007546,
+ 0.40136599999993905,
+ 0.40136999999992895,
+ 0.4013729999999214,
+ 0.40137300000003506,
+ 0.40138200000001234,
+ 0.40138200000001234,
+ 0.4013879999999972,
+ 0.401395999999977,
+ 0.4014039999999568,
+ 0.4014070000000629,
+ 0.4014079999999467,
+ 0.40141800000003514,
+ 0.40142500000001746,
+ 0.4014319999999998,
+ 0.40143799999998464,
+ 0.40145400000005793,
+ 0.4014590000000453,
+ 0.401459000000159,
+ 0.4014659999999708,
+ 0.40146799999996574,
+ 0.40148599999997714,
+ 0.40149700000006305,
+ 0.40150199999993674,
+ 0.40150900000003276,
+ 0.40151599999995824,
+ 0.40151700000001256,
+ 0.4015390000000707,
+ 0.4015390000001844,
+ 0.4015850000000114,
+ 0.4016260000000784,
+ 0.4016389999999319,
+ 0.4016639999999825,
+ 0.4016679999999724,
+ 0.4016719999999623,
+ 0.40172099999995226,
+ 0.4017329999999788,
+ 0.40173600000002807,
+ 0.401738000000023,
+ 0.401787000000013,
+ 0.4018029999999726,
+ 0.4018419999999878,
+ 0.40185200000007626,
+ 0.4018530000000169,
+ 0.4018590000000586,
+ 0.40194300000001704,
+ 0.4019499999999425,
+ 0.4019630000000234,
+ 0.4019670000000133,
+ 0.4019739999999956,
+ 0.4019749999999931,
+ 0.4019930000000045,
+ 0.40202099999999064,
+ 0.4020219999999881,
+ 0.40205399999996416,
+ 0.4021060000000034,
+ 0.40210799999999836,
+ 0.40210899999999583,
+ 0.402121999999963,
+ 0.4021229999999605,
+ 0.4021350000000439,
+ 0.402136999999982,
+ 0.402150000000006,
+ 0.4021699999999555,
+ 0.40217299999994793,
+ 0.4021860000000288,
+ 0.4021900000000187,
+ 0.4021910000000162,
+ 0.40219200000001365,
+ 0.4022229999999354,
+ 0.40223100000002887,
+ 0.4022469999999885,
+ 0.4022589999999582,
+ 0.40228700000000117,
+ 0.4022949999998673,
+ 0.4022989999999709,
+ 0.40231799999997975,
+ 0.40233599999999115,
+ 0.4023379999999861,
+ 0.4023650000000316,
+ 0.4023669999999129,
+ 0.4023849999999811,
+ 0.4024019999999382,
+ 0.40240400000004684,
+ 0.40240700000003926,
+ 0.40241500000001906,
+ 0.402417000000014,
+ 0.40242399999988265,
+ 0.4024289999999837,
+ 0.40246300000001156,
+ 0.4025210000000925,
+ 0.4025240000000849,
+ 0.40253300000000536,
+ 0.4025459999999157,
+ 0.40255899999999656,
+ 0.4025720000000206,
+ 0.4025969999999006,
+ 0.4026330000000371,
+ 0.4026420000000144,
+ 0.40266799999994873,
+ 0.4026880000000119,
+ 0.40271099999995386,
+ 0.4027439999999842,
+ 0.4027720000000272,
+ 0.40278200000000197,
+ 0.4028059999999982,
+ 0.4028250000000071,
+ 0.4028279999999995,
+ 0.4028319999999894,
+ 0.40286700000001474,
+ 0.40292199999998957,
+ 0.4029279999999744,
+ 0.4029319999999643,
+ 0.40298799999999346,
+ 0.40300200000001496,
+ 0.4030230000000188,
+ 0.4030679999998483,
+ 0.4030830000000378,
+ 0.4031200000000581,
+ 0.40317099999992934,
+ 0.4031769999999142,
+ 0.4031880000000001,
+ 0.4032149999999888,
+ 0.40321799999992436,
+ 0.40322599999990416,
+ 0.4032270000000153,
+ 0.40323799999998755,
+ 0.403259999999932,
+ 0.40328999999996995,
+ 0.4032900000001973,
+ 0.40330199999993965,
+ 0.40332100000000537,
+ 0.40332999999998265,
+ 0.4033709999999928,
+ 0.4033709999999928,
+ 0.40342199999997774,
+ 0.40342999999995754,
+ 0.4034389999999348,
+ 0.4034710000000814,
+ 0.40347700000006625,
+ 0.40350100000000566,
+ 0.40355399999998554,
+ 0.4035630000000765,
+ 0.40356499999995776,
+ 0.40356599999995524,
+ 0.40358299999996916,
+ 0.40360599999996793,
+ 0.4036069999999654,
+ 0.403630000000021,
+ 0.40363699999988967,
+ 0.4036619999999971,
+ 0.40368899999998575,
+ 0.4037030000000641,
+ 0.40374199999996563,
+ 0.4037620000001425,
+ 0.40379299999995055,
+ 0.4038259999999809,
+ 0.4038269999999784,
+ 0.40384699999998475,
+ 0.4038489999999797,
+ 0.4038820000000669,
+ 0.40388599999999997,
+ 0.4039099999999962,
+ 0.4039299999999457,
+ 0.4039339999999356,
+ 0.40395300000000134,
+ 0.40396399999997357,
+ 0.4039670000000797,
+ 0.40396899999996094,
+ 0.40406099999995604,
+ 0.4040830000000142,
+ 0.40410899999994854,
+ 0.4041260000000193,
+ 0.4041400000000408,
+ 0.40415299999995113,
+ 0.40415500000017346,
+ 0.40417999999999665,
+ 0.4041810000001078,
+ 0.4041829999999891,
+ 0.40418399999998655,
+ 0.4041949999999588,
+ 0.40421099999997523,
+ 0.4042259999998805,
+ 0.4042289999999866,
+ 0.4042370000001938,
+ 0.4042530000000397,
+ 0.4042569999999728,
+ 0.4042570000000296,
+ 0.40425900000002457,
+ 0.40426300000001447,
+ 0.4042729999999892,
+ 0.4042779999999766,
+ 0.4043819999999414,
+ 0.40438499999982014,
+ 0.40447799999998324,
+ 0.4044789999999807,
+ 0.40456799999992654,
+ 0.4046009999999569,
+ 0.4046260000000075,
+ 0.40467499999999745,
+ 0.4046849999999722,
+ 0.404692999999952,
+ 0.4047099999999091,
+ 0.4047480000000405,
+ 0.40475900000001275,
+ 0.40483099999994465,
+ 0.4048689999999624,
+ 0.40488399999981084,
+ 0.40490599999998267,
+ 0.40491899999983616,
+ 0.40501100000005863,
+ 0.4050309999999513,
+ 0.4050510000000145,
+ 0.4050919999999678,
+ 0.4052160000001095,
+ 0.4052590000000009,
+ 0.405275999999958,
+ 0.40537400000005164,
+ 0.4053800000000365,
+ 0.4053870000000188,
+ 0.4054039999999759,
+ 0.4054519999999684,
+ 0.4055479999999534,
+ 0.4055479999999534,
+ 0.4055720000000065,
+ 0.405619999999999,
+ 0.405619999999999,
+ 0.4056229999999914,
+ 0.40562899999997626,
+ 0.4056749999999738,
+ 0.40572000000008757,
+ 0.40573799999992843,
+ 0.4057549999999992,
+ 0.40576099999998405,
+ 0.4058260000000473,
+ 0.4058750000000373,
+ 0.4058820000000196,
+ 0.40589199999999437,
+ 0.40596499999992375,
+ 0.40597699999989345,
+ 0.40597999999999956,
+ 0.40600999999998066,
+ 0.40603999999996176,
+ 0.4060539999999264,
+ 0.4060549999999239,
+ 0.40608799999995426,
+ 0.40608899999995174,
+ 0.4060990000000402,
+ 0.40612099999998463,
+ 0.4062049999999999,
+ 0.40620700000010856,
+ 0.40622700000005807,
+ 0.4062460000000101,
+ 0.40625599999998485,
+ 0.40639599999997245,
+ 0.406462999999917,
+ 0.40654100000000426,
+ 0.4065580000000182,
+ 0.40658799999994244,
+ 0.40660300000001826,
+ 0.40663400000016736,
+ 0.40667999999993754,
+ 0.40669500000001335,
+ 0.40671199999997043,
+ 0.40673100000003615,
+ 0.4067459999998846,
+ 0.40675999999996293,
+ 0.40677400000004127,
+ 0.40681800000004387,
+ 0.40682799999990493,
+ 0.4068279999999618,
+ 0.40688599999998587,
+ 0.4068930000000819,
+ 0.40696600000001126,
+ 0.40697099999988495,
+ 0.40708999999992557,
+ 0.40709999999995716,
+ 0.4071270000000595,
+ 0.4071310000000494,
+ 0.4071550000000457,
+ 0.4071799999999257,
+ 0.4072479999999814,
+ 0.40726200000005974,
+ 0.4072719999999208,
+ 0.40733600000021397,
+ 0.4073869999999715,
+ 0.40739000000007763,
+ 0.4074049999999829,
+ 0.4074330000000259,
+ 0.4074510000000373,
+ 0.40749000000005253,
+ 0.407504999999901,
+ 0.407511999999997,
+ 0.4075990000000047,
+ 0.4076039999999921,
+ 0.4076719999999341,
+ 0.40772899999990386,
+ 0.40775699999994686,
+ 0.40776299999998855,
+ 0.4077780000000075,
+ 0.4078220000000101,
+ 0.4078230000000076,
+ 0.4078380000000834,
+ 0.40784899999994195,
+ 0.4078550000000405,
+ 0.40792099999998754,
+ 0.4079550000000154,
+ 0.40797199999997247,
+ 0.4079980000000205,
+ 0.4080619999999726,
+ 0.40809699999999793,
+ 0.40813200000002325,
+ 0.4081359999999563,
+ 0.4081390000000056,
+ 0.40817600000002585,
+ 0.4082150000000411,
+ 0.4082509999999502,
+ 0.4082559999999944,
+ 0.4082700000000159,
+ 0.4082909999999629,
+ 0.40831199999990986,
+ 0.40831500000001597,
+ 0.4083289999999806,
+ 0.4083380000001853,
+ 0.4083580000001348,
+ 0.4083650000000034,
+ 0.4084530000000086,
+ 0.40850000000000364,
+ 0.40851099999997587,
+ 0.40855499999997846,
+ 0.4085680000000025,
+ 0.40857200000004923,
+ 0.40857399999998734,
+ 0.4085799999999722,
+ 0.40861099999995076,
+ 0.408615999999995,
+ 0.4086579999998321,
+ 0.4086660000000393,
+ 0.40867399999996223,
+ 0.40868500000004815,
+ 0.4087059999999383,
+ 0.4087090000000444,
+ 0.4087809999998626,
+ 0.40878799999995863,
+ 0.408800000000042,
+ 0.40880300000003444,
+ 0.4088080000000218,
+ 0.40880899999996245,
+ 0.4088739999999689,
+ 0.40887899999984256,
+ 0.4089010000000144,
+ 0.4089050000000043,
+ 0.40892799999983254,
+ 0.4090739999999755,
+ 0.40917000000001735,
+ 0.40929000000005544,
+ 0.40929800000003524,
+ 0.4093340000001717,
+ 0.409355000000005,
+ 0.4093669999999747,
+ 0.40937799999983326,
+ 0.4094679999998334,
+ 0.40955799999983356,
+ 0.40958200000000033,
+ 0.40958599999999024,
+ 0.40965199999999413,
+ 0.40966099999991457,
+ 0.4096640000000207,
+ 0.4097390000001724,
+ 0.4097560000000158,
+ 0.4097600000000057,
+ 0.4098039999998946,
+ 0.40994900000009693,
+ 0.41002900000000864,
+ 0.41006299999997964,
+ 0.410240999999985,
+ 0.4102510000000166,
+ 0.41031800000001795,
+ 0.41036399999984496,
+ 0.4104099999999562,
+ 0.4104489999999714,
+ 0.4104609999999411,
+ 0.4104939999999715,
+ 0.4106380000000627,
+ 0.410665999999992,
+ 0.4106860000000552,
+ 0.4107490000001235,
+ 0.41082700000015393,
+ 0.4109280000000126,
+ 0.41093000000000757,
+ 0.41094600000008086,
+ 0.41099099999996724,
+ 0.41100899999997864,
+ 0.4110400000000709,
+ 0.41113800000005085,
+ 0.41115100000001803,
+ 0.411192999999912,
+ 0.4112119999999777,
+ 0.41122199999995246,
+ 0.4112689999999475,
+ 0.4112729999999374,
+ 0.4113009999999804,
+ 0.41131499999994503,
+ 0.41133400000001075,
+ 0.4113959999999679,
+ 0.4114359999999806,
+ 0.411438999999973,
+ 0.4114469999999528,
+ 0.411448000000064,
+ 0.4114789999999857,
+ 0.411487999999963,
+ 0.41150200000004133,
+ 0.41150500000003376,
+ 0.4115189999999984,
+ 0.41152599999998074,
+ 0.4116080000000011,
+ 0.41161700000009205,
+ 0.4116960000000063,
+ 0.41170599999998103,
+ 0.4117650000000026,
+ 0.41179200000010496,
+ 0.4117979999999761,
+ 0.4119439999999486,
+ 0.41194900000004964,
+ 0.4119500000001608,
+ 0.41199299999993855,
+ 0.4121090000001004,
+ 0.4121160000000259,
+ 0.4121939999999995,
+ 0.41221199999995406,
+ 0.41226899999992384,
+ 0.41227900000012596,
+ 0.4123100000000477,
+ 0.4123149999999214,
+ 0.41235399999999345,
+ 0.4123609999999758,
+ 0.412373000000116,
+ 0.41247199999997974,
+ 0.4125100000001112,
+ 0.4125980000000027,
+ 0.4126180000000659,
+ 0.4126289999999244,
+ 0.4127120000000559,
+ 0.4127220000000307,
+ 0.41276899999996886,
+ 0.4128049999999348,
+ 0.41281500000002325,
+ 0.41281900000001315,
+ 0.4128240000000005,
+ 0.41283900000007634,
+ 0.412967999999978,
+ 0.4130279999999402,
+ 0.4130400000000236,
+ 0.41307900000003883,
+ 0.41312199999993027,
+ 0.41320300000001,
+ 0.4132210000000214,
+ 0.4133520000000317,
+ 0.41339899999991303,
+ 0.4135519999999815,
+ 0.4135800000000245,
+ 0.413586000000123,
+ 0.41358999999999924,
+ 0.4136759999998958,
+ 0.4136900000000878,
+ 0.4137269999999944,
+ 0.41373299999997926,
+ 0.41383699999983037,
+ 0.4138500000001386,
+ 0.4138629999999921,
+ 0.4139239999999518,
+ 0.4139319999999316,
+ 0.4139509999999973,
+ 0.4139659999999594,
+ 0.41399100000001,
+ 0.41406099999994694,
+ 0.4141019999999571,
+ 0.4141309999999976,
+ 0.4141379999998662,
+ 0.41415600000004815,
+ 0.41417599999999766,
+ 0.414218000000119,
+ 0.414305000000013,
+ 0.4145129999999426,
+ 0.4146170000001348,
+ 0.4146220000000085,
+ 0.41463599999997314,
+ 0.4146410000000742,
+ 0.41467899999997826,
+ 0.4147140000000036,
+ 0.4147140000000036,
+ 0.41477199999997083,
+ 0.4147769999999582,
+ 0.4147880000000441,
+ 0.4148170000000846,
+ 0.41486299999996845,
+ 0.41489099999989776,
+ 0.4149009999999862,
+ 0.414969999999812,
+ 0.41499099999987266,
+ 0.41507000000001426,
+ 0.4151010000000497,
+ 0.4151560000000245,
+ 0.41526599999997416,
+ 0.41534599999999955,
+ 0.41543699999999717,
+ 0.4154430000000957,
+ 0.41546900000003006,
+ 0.41547800000012103,
+ 0.41558599999996204,
+ 0.4156120000000101,
+ 0.41576499999996486,
+ 0.41576999999995223,
+ 0.41580199999998513,
+ 0.415862000000061,
+ 0.4158669999999347,
+ 0.41586699999999155,
+ 0.4158909999999878,
+ 0.4159620000000359,
+ 0.4159859999999753,
+ 0.41598799999997027,
+ 0.4160429999999451,
+ 0.4161220000000867,
+ 0.41619199999990997,
+ 0.4161950000000161,
+ 0.4162020000001121,
+ 0.41623299999992014,
+ 0.41629199999999855,
+ 0.41638000000000375,
+ 0.4164389999999685,
+ 0.41657000000003563,
+ 0.4167059999999765,
+ 0.41674399999999423,
+ 0.416780000000017,
+ 0.4167860000000019,
+ 0.4169170000000122,
+ 0.41695800000002237,
+ 0.4169939999999315,
+ 0.41702600000007806,
+ 0.41709500000001754,
+ 0.41710699999998724,
+ 0.4171569999999747,
+ 0.41721400000005815,
+ 0.41728599999999005,
+ 0.4174709999999777,
+ 0.4175030000000106,
+ 0.417707000000064,
+ 0.41770999999994274,
+ 0.417756000000054,
+ 0.41797700000006444,
+ 0.4179870000000392,
+ 0.4180099999999811,
+ 0.41807599999992817,
+ 0.4181300000000192,
+ 0.41816900000003443,
+ 0.41824700000000803,
+ 0.41835100000002967,
+ 0.41866299999992407,
+ 0.4186660000000302,
+ 0.4187140000000227,
+ 0.4187790000000291,
+ 0.4187810000000809,
+ 0.41885900000011134,
+ 0.4189289999999346,
+ 0.41894699999988916,
+ 0.4189859999999044,
+ 0.41901800000005096,
+ 0.41906000000000176,
+ 0.41917199999994637,
+ 0.4194119999999657,
+ 0.4196560000000318,
+ 0.4197630000001027,
+ 0.4197980000000143,
+ 0.4198319999998148,
+ 0.42013100000002623,
+ 0.4203549999999723,
+ 0.4204770000000053,
+ 0.4205289999999877,
+ 0.42064400000003843,
+ 0.4206649999999854,
+ 0.42079999999998563,
+ 0.42082300000004125,
+ 0.4209579999999278,
+ 0.42099500000006174,
+ 0.4210599999998976,
+ 0.4211689999999635,
+ 0.4212400000000116,
+ 0.4213270000000193,
+ 0.4213280000000168,
+ 0.42136399999998275,
+ 0.4214909999999463,
+ 0.4214949999999362,
+ 0.42178599999988364,
+ 0.42179399999997713,
+ 0.4218240000000151,
+ 0.4218789999999899,
+ 0.42188099999998485,
+ 0.42200500000001284,
+ 0.422219000000041,
+ 0.4223170000000209,
+ 0.42234899999994013,
+ 0.4224229999999807,
+ 0.42245900000000347,
+ 0.422553999999991,
+ 0.42259200000000874,
+ 0.4226529999999684,
+ 0.42282399999999143,
+ 0.42287099999998645,
+ 0.42289900000002945,
+ 0.4229250000000775,
+ 0.4231200000000399,
+ 0.42313799999999446,
+ 0.42332599999997456,
+ 0.4233649999999898,
+ 0.4233719999999721,
+ 0.42347300000005816,
+ 0.42348100000003797,
+ 0.42354699999987133,
+ 0.42363299999999526,
+ 0.4238669999999729,
+ 0.42391600000007656,
+ 0.42393600000002607,
+ 0.42395200000009936,
+ 0.42397200000004887,
+ 0.42397300000004634,
+ 0.42400099999997565,
+ 0.4242150000000038,
+ 0.4242580000000089,
+ 0.4242619999999988,
+ 0.4243390000000318,
+ 0.4245109999999386,
+ 0.4245850000002065,
+ 0.4245870000000309,
+ 0.42462299999999686,
+ 0.42464700000004996,
+ 0.425139000000172,
+ 0.42541400000004614,
+ 0.42552999999998065,
+ 0.42556899999999587,
+ 0.4255829999999605,
+ 0.42573400000003403,
+ 0.42574500000000626,
+ 0.4259800000000382,
+ 0.42600900000002184,
+ 0.42617199999995137,
+ 0.4261819999999261,
+ 0.42648300000007566,
+ 0.426497000000154,
+ 0.4266930000000002,
+ 0.42673899999999776,
+ 0.42676199999999653,
+ 0.4268079999999941,
+ 0.42691100000001825,
+ 0.42702299999996285,
+ 0.42705899999987196,
+ 0.4271000000001095,
+ 0.4271370000000161,
+ 0.42714200000000346,
+ 0.42714599999999336,
+ 0.42724299999997584,
+ 0.42725000000018554,
+ 0.4273350000000846,
+ 0.4275069999999914,
+ 0.42751100000003817,
+ 0.4275159999999687,
+ 0.42762900000002446,
+ 0.42782800000009047,
+ 0.42843900000002577,
+ 0.42856799999992745,
+ 0.4287000000001626,
+ 0.42905100000007224,
+ 0.42905700000000024,
+ 0.4291369999999688,
+ 0.42929499999991094,
+ 0.4294950000000881,
+ 0.4295670000001337,
+ 0.4296120000000201,
+ 0.4298319999999194,
+ 0.42985299999998006,
+ 0.43093700000002855,
+ 0.4310169999999971,
+ 0.43104600000015125,
+ 0.4310920000000351,
+ 0.4312529999999697,
+ 0.4313060000000064,
+ 0.43133899999997993,
+ 0.43158399999998664,
+ 0.43159099999996897,
+ 0.43160999999997784,
+ 0.43174099999998816,
+ 0.4317509999998492,
+ 0.4318949999999404,
+ 0.4320259999999507,
+ 0.4322109999998247,
+ 0.4322419999999738,
+ 0.43232000000000426,
+ 0.4323779999999715,
+ 0.4324300000000676,
+ 0.43258700000001227,
+ 0.4327010000000655,
+ 0.4330379999998968,
+ 0.4330649999999423,
+ 0.43321500000001834,
+ 0.43337499999995543,
+ 0.43340200000000095,
+ 0.43343599999997195,
+ 0.4334440000000086,
+ 0.43348200000002635,
+ 0.4336460000000102,
+ 0.43383299999993596,
+ 0.4339359999999033,
+ 0.4340159999999287,
+ 0.43411700000001474,
+ 0.43450099999995473,
+ 0.4345499999999447,
+ 0.43463900000006106,
+ 0.43533899999999903,
+ 0.4353519999999662,
+ 0.435436999999979,
+ 0.4357549999999719,
+ 0.43603600000005827,
+ 0.436087999999927,
+ 0.4362600000000043,
+ 0.43631200000004355,
+ 0.43649599999992006,
+ 0.4366729999999279,
+ 0.43706200000019635,
+ 0.4372169999999187,
+ 0.4373600000000124,
+ 0.43752999999992426,
+ 0.43758600000001024,
+ 0.4375930000000494,
+ 0.43776100000002316,
+ 0.4379060000001118,
+ 0.4379149999999754,
+ 0.4379839999999149,
+ 0.43799799999987954,
+ 0.4380670000000464,
+ 0.43814500000002,
+ 0.43824299999999994,
+ 0.4391450000000532,
+ 0.4392080000000078,
+ 0.43950200000017503,
+ 0.4395569999999793,
+ 0.4397440000000188,
+ 0.43993699999987257,
+ 0.43996099999992566,
+ 0.44053200000007564,
+ 0.44056000000000495,
+ 0.44062000000008084,
+ 0.4407679999999914,
+ 0.44088399999998273,
+ 0.4409180000000106,
+ 0.4409579999999096,
+ 0.4410199999999804,
+ 0.44132700000000114,
+ 0.44163700000001427,
+ 0.441983999999934,
+ 0.4429049999998824,
+ 0.44328699999982746,
+ 0.4434679999999389,
+ 0.44374900000002526,
+ 0.44374900000002526,
+ 0.44390599999996994,
+ 0.44402000000013686,
+ 0.444028000000003,
+ 0.4440389999999752,
+ 0.4441540000000259,
+ 0.44424099999991995,
+ 0.4442579999999907,
+ 0.44471899999996367,
+ 0.44490399999995134,
+ 0.44503599999995913,
+ 0.4452689999998256,
+ 0.4455729999999676,
+ 0.4460020000000213,
+ 0.4460560000000555,
+ 0.4460579999999936,
+ 0.44610599999987244,
+ 0.446254999999951,
+ 0.4462659999999232,
+ 0.44658300000003237,
+ 0.4468809999999621,
+ 0.44715100000007624,
+ 0.44737099999997554,
+ 0.44770199999993565,
+ 0.4477350000000797,
+ 0.44778500000006716,
+ 0.44796500000006745,
+ 0.44799299999999675,
+ 0.4483430000000226,
+ 0.44875899999999547,
+ 0.4488569999999754,
+ 0.44962100000020655,
+ 0.4498000000000957,
+ 0.44981400000006033,
+ 0.4499160000000302,
+ 0.44996200000002773,
+ 0.45006699999999,
+ 0.45030099999985396,
+ 0.4503519999998389,
+ 0.4503790000001118,
+ 0.45075100000008206,
+ 0.4507659999999305,
+ 0.4508459999999559,
+ 0.4510930000001281,
+ 0.45113999999989574,
+ 0.45168900000010126,
+ 0.4517519999999422,
+ 0.45188099999995757,
+ 0.4519260000000145,
+ 0.45218500000009954,
+ 0.45238800000004176,
+ 0.4524820000001455,
+ 0.45273599999995895,
+ 0.4528219999999692,
+ 0.4530089999999518,
+ 0.4530240000001413,
+ 0.4531099999999242,
+ 0.453145999999947,
+ 0.4532759999999598,
+ 0.453356999999869,
+ 0.45350199999995766,
+ 0.45359099999996033,
+ 0.45378600000003644,
+ 0.4538720000000467,
+ 0.45423200000004726,
+ 0.4545749999999771,
+ 0.4548689999999169,
+ 0.455237000000011,
+ 0.4552929999999833,
+ 0.4555649999999787,
+ 0.45603399999993144,
+ 0.45632000000000517,
+ 0.45642800000007355,
+ 0.4564549999998917,
+ 0.4564890000001469,
+ 0.4565789999999197,
+ 0.45704499999988,
+ 0.45715599999994083,
+ 0.45723499999985506,
+ 0.4578279999999495,
+ 0.45815200000015466,
+ 0.4583989999998721,
+ 0.45848799999998846,
+ 0.4587799999999902,
+ 0.45906400000001213,
+ 0.45940599999994447,
+ 0.45945400000005066,
+ 0.4595830000000092,
+ 0.4596609999999828,
+ 0.4596670000000813,
+ 0.4596829999999841,
+ 0.45976100000007136,
+ 0.4599150000000236,
+ 0.4602189999999382,
+ 0.4604110000000219,
+ 0.4605239999998503,
+ 0.4607989999999518,
+ 0.46092799999996714,
+ 0.4610820000000331,
+ 0.4612560000000485,
+ 0.4612940000000094,
+ 0.4613160000000107,
+ 0.4615609999999606,
+ 0.4618489999998019,
+ 0.4619369999998071,
+ 0.4619989999998779,
+ 0.4620119999999588,
+ 0.4621999999999389,
+ 0.46253200000001016,
+ 0.4628780000000461,
+ 0.46290499999986423,
+ 0.46297099999992497,
+ 0.46313100000020313,
+ 0.463149000000044,
+ 0.4634759999999005,
+ 0.46369000000004235,
+ 0.4642960000000471,
+ 0.46453299999996034,
+ 0.46465699999998833,
+ 0.46468400000003385,
+ 0.46491600000001654,
+ 0.46505200000001423,
+ 0.4655999999999949,
+ 0.4656330000000253,
+ 0.4662999999999897,
+ 0.4665989999999738,
+ 0.4666429999999764,
+ 0.4667249999999967,
+ 0.4668229999999767,
+ 0.46708300000000236,
+ 0.4680230000000165,
+ 0.4680720000000065,
+ 0.46820099999990816,
+ 0.4683790000001409,
+ 0.46889900000007856,
+ 0.46945400000004156,
+ 0.4697529999999688,
+ 0.4698080000000573,
+ 0.46996599999999944,
+ 0.47016599999983555,
+ 0.47069400000003725,
+ 0.470766000000026,
+ 0.47079300000001467,
+ 0.4709940000000188,
+ 0.47114600000008977,
+ 0.47153000000002976,
+ 0.4717190000000073,
+ 0.47207000000003063,
+ 0.47207300000013674,
+ 0.47291999999993095,
+ 0.4730690000001232,
+ 0.4733919999999898,
+ 0.47346600000003036,
+ 0.47355800000013915,
+ 0.473747000000003,
+ 0.4738070000000789,
+ 0.4739669999999023,
+ 0.4739789999999857,
+ 0.4740770000000225,
+ 0.47588100000007216,
+ 0.47607799999991585,
+ 0.47713400000003503,
+ 0.4773370000000341,
+ 0.4776630000001205,
+ 0.477980000000116,
+ 0.4785660000000007,
+ 0.4786830000000464,
+ 0.4789459999999508,
+ 0.4792810000001282,
+ 0.4793020000000183,
+ 0.47948600000006536,
+ 0.47953599999999597,
+ 0.4806090000000154,
+ 0.48062100000004193,
+ 0.4807360000000358,
+ 0.4808339999999589,
+ 0.4809010000001308,
+ 0.48091599999997925,
+ 0.48114699999996446,
+ 0.4820200000000341,
+ 0.4821359999999686,
+ 0.48222099999998136,
+ 0.4823669999999538,
+ 0.4837880000000041,
+ 0.4842989999999645,
+ 0.48445700000002034,
+ 0.4850779999999304,
+ 0.4850860000000239,
+ 0.48513600000001134,
+ 0.485260000000153,
+ 0.48526099999997996,
+ 0.4854249999998501,
+ 0.4854569999999967,
+ 0.48568999999997686,
+ 0.4867390000000569,
+ 0.4869029999999839,
+ 0.48733100000004015,
+ 0.48759800000004816,
+ 0.4882430000000113,
+ 0.48882400000002235,
+ 0.4888859999999795,
+ 0.4896369999999024,
+ 0.4898160000000189,
+ 0.49048900000002504,
+ 0.49074800000005325,
+ 0.49097999999992226,
+ 0.49141599999995833,
+ 0.49172299999997904,
+ 0.4919390000000021,
+ 0.49195100000002867,
+ 0.49227700000005825,
+ 0.492432000000008,
+ 0.49356699999998455,
+ 0.49394699999993463,
+ 0.49547899999993206,
+ 0.49806499999999687,
+ 0.4987119999998413,
+ 0.4988659999999072,
+ 0.4996159999999463,
+ 0.49963400000001457,
+ 0.5000339999999142,
+ 0.5002570000000333,
+ 0.5005049999999756,
+ 0.5008750000001783,
+ 0.5008869999999774,
+ 0.5010980000001837,
+ 0.5021330000001853,
+ 0.5021700000000919,
+ 0.5027509999999893,
+ 0.5033180000000357,
+ 0.5034779999999728,
+ 0.5035319999999501,
+ 0.503729999999905,
+ 0.5037660000000415,
+ 0.5038230000000112,
+ 0.504081000000042,
+ 0.5044179999999869,
+ 0.5046869999999899,
+ 0.5049089999999978,
+ 0.5062719999998535,
+ 0.5068120000000818,
+ 0.5068709999999896,
+ 0.5071960000000217,
+ 0.5076679999999669,
+ 0.5083989999999403,
+ 0.5093099999999708,
+ 0.510532000000012,
+ 0.5111920000000509,
+ 0.5114430000000993,
+ 0.5115000000000691,
+ 0.5121440000000348,
+ 0.5126470000000154,
+ 0.5133130000000392,
+ 0.5134090000000242,
+ 0.5141849999999977,
+ 0.5144689999999628,
+ 0.5148670000000948,
+ 0.5152479999999855,
+ 0.5153380000001562,
+ 0.5154370000000199,
+ 0.5155139999999392,
+ 0.5155160000000478,
+ 0.5156890000000658,
+ 0.5157590000000027,
+ 0.5169710000000123,
+ 0.5172790000001442,
+ 0.5174180000000206,
+ 0.5187720000000127,
+ 0.5188309999998637,
+ 0.5190249999998287,
+ 0.5190829999999096,
+ 0.5193719999999757,
+ 0.5206130000000257,
+ 0.5208880000000136,
+ 0.5209019999999782,
+ 0.5209829999998874,
+ 0.5210169999998016,
+ 0.5210569999999279,
+ 0.5210629999999128,
+ 0.5212649999998575,
+ 0.5214330000000018,
+ 0.5214330000000018,
+ 0.5238520000000335,
+ 0.525047000000086,
+ 0.5254190000000563,
+ 0.5264269999998987,
+ 0.527445000000057,
+ 0.5281350000000202,
+ 0.528391000000056,
+ 0.5290430000000015,
+ 0.5295679999999265,
+ 0.5302529999999024,
+ 0.5302780000000666,
+ 0.5314520000000584,
+ 0.5316290000000663,
+ 0.5330789999999297,
+ 0.53425900000002,
+ 0.5346829999999727,
+ 0.5374469999999292,
+ 0.539623000000006,
+ 0.5403630000000703,
+ 0.5406520000000228,
+ 0.5420279999999593,
+ 0.5422810000000027,
+ 0.5432519999999386,
+ 0.5437380000000758,
+ 0.5438580000000002,
+ 0.5444239999999354,
+ 0.5464169999999626,
+ 0.5472540000000663,
+ 0.5478410000000054,
+ 0.5482259999999997,
+ 0.5486509999998361,
+ 0.5494469999998728,
+ 0.5520910000000185,
+ 0.5551009999999792,
+ 0.5565819999999349,
+ 0.5599389999999858,
+ 0.563408999999865,
+ 0.5667629999999804,
+ 0.567497000000003,
+ 0.5677039999999351,
+ 0.5682569999999032,
+ 0.5687399999999343,
+ 0.5688460000001214,
+ 0.5688679999999522,
+ 0.5698409999999967,
+ 0.5733219999999619,
+ 0.5741050000001451,
+ 0.5780520000000138,
+ 0.5796930000000202,
+ 0.5816859999999906,
+ 0.5888350000000173,
+ 0.590404000000035,
+ 0.5919010000000071,
+ 0.5925869999999804,
+ 0.5939339999999902,
+ 0.596798999999919,
+ 0.601605999999947,
+ 0.6024980000000255,
+ 0.6058259999999791,
+ 0.6075710000000072,
+ 0.6113339999999425,
+ 0.612538000000086,
+ 0.6141680000000065,
+ 0.6153279999999768,
+ 0.6169409999999971,
+ 0.6224639999999795,
+ 0.6249579999998787,
+ 0.6352210000000014,
+ 0.9092749999999796
+ ]
+ }
+ ]
}
- ],
- "scenarios": [
+ ]
+ },
+ {
+ "id": "nested-ui-500-nodes",
+ "name": "Nested UI: 500 nodes",
+ "question": "What does a complete 500-node nested layout transaction cost?",
+ "description": "A deterministic near-balanced hierarchy alternates row and column Flexbox containers. It represents nested application UI while keeping the topology identical for every package and API.",
+ "transaction": "Create the public tree, apply styles, attach every child, calculate layout, read left/top/width/height for every node, and release resources when the API requires it.",
+ "parameters": {
+ "nodeCount": 500,
+ "leafCount": 250,
+ "depth": 10,
+ "maximumBranchingFactor": 2,
+ "viewportWidth": 1200,
+ "viewportHeight": 800
+ },
+ "results": [
{
- "id": "coding-agent-chat-initial-layout",
- "name": "Coding-agent chat: initial layout",
- "question": "How long does a modeled coding-agent screen take to build, measure, lay out, and read?",
- "description": "A fixed desktop chat fixture contains a session sidebar, measured labels, a message transcript, and a composer. It models a complete application layout transaction rather than an engine-only call.",
- "transaction": "Create the public tree and JavaScript contexts, compute with the public measure callback, then read every unrounded layout snapshot.",
- "parameters": {
- "viewportWidth": 1280,
- "viewportHeight": 800,
- "sessionCount": 18,
- "messageCount": 32
- },
- "results": [
+ "targetId": "node",
+ "packageName": "@taffyjs/node",
+ "hz": 30.771753808701607,
+ "meanMs": 32.497335258064524,
+ "medianMs": 31.89542399999982,
+ "minMs": 31.598945000000185,
+ "maxMs": 44.64811499999996,
+ "p75Ms": 32.12071500000002,
+ "p99Ms": 44.64811499999996,
+ "maxRelativeMarginOfError": 2.628669824250741,
+ "roundCount": 1,
+ "sampleCount": 31,
+ "rounds": [
{
- "targetId": "node",
- "packageName": "@taffyjs/node",
- "hz": 39.026122432624454,
- "meanMs": 25.623862625000005,
- "medianMs": 25.330458500000077,
- "minMs": 23.808791000000156,
- "maxMs": 34.39249999999993,
- "p75Ms": 25.98412499999995,
- "p99Ms": 34.39249999999993,
- "maxRelativeMarginOfError": 2.4296935374358117,
- "roundCount": 1,
- "sampleCount": 40,
- "rounds": [
- {
- "hz": 39.026122432624454,
- "meanMs": 25.623862625000005,
- "medianMs": 25.330458500000077,
- "minMs": 23.808791000000156,
- "maxMs": 34.39249999999993,
- "p75Ms": 25.98412499999995,
- "p99Ms": 34.39249999999993,
- "relativeMarginOfError": 2.4296935374358117,
- "sampleCount": 40,
- "samplesMs": [
- 23.808791000000156,
- 23.860374999999976,
- 23.8627919999999,
- 23.873417000000018,
- 23.904792000000043,
- 23.937167000000045,
- 24.02816699999994,
- 24.06966699999998,
- 24.21858300000008,
- 24.275874999999928,
- 24.319334000000026,
- 24.39579200000003,
- 24.559000000000196,
- 24.565583999999944,
- 24.693916000000172,
- 24.731624999999894,
- 24.839750000000095,
- 24.891375000000153,
- 25.080875000000106,
- 25.25525000000016,
- 25.405666999999994,
- 25.441666999999825,
- 25.56008399999996,
- 25.567207999999937,
- 25.69250000000011,
- 25.768832999999972,
- 25.826708999999937,
- 25.83287499999983,
- 25.84179199999994,
- 25.98412499999995,
- 26.181208999999853,
- 26.628375000000005,
- 26.692499999999995,
- 27.149167000000034,
- 27.317542000000003,
- 27.490542000000005,
- 27.560625000000073,
- 28.213167000000112,
- 29.23529099999996,
- 34.39249999999993
- ]
- }
+ "hz": 30.771753808701607,
+ "meanMs": 32.497335258064524,
+ "medianMs": 31.89542399999982,
+ "minMs": 31.598945000000185,
+ "maxMs": 44.64811499999996,
+ "p75Ms": 32.12071500000002,
+ "p99Ms": 44.64811499999996,
+ "relativeMarginOfError": 2.628669824250741,
+ "sampleCount": 31,
+ "samplesMs": [
+ 31.598945000000185,
+ 31.680103000000145,
+ 31.72738400000003,
+ 31.75509999999997,
+ 31.768348999999944,
+ 31.804202000000032,
+ 31.805877999999893,
+ 31.821687999999995,
+ 31.822986000000014,
+ 31.828233999999952,
+ 31.832769999999982,
+ 31.858116999999993,
+ 31.863537000000065,
+ 31.876171,
+ 31.891254000000117,
+ 31.89542399999982,
+ 31.928267000000005,
+ 31.94107800000006,
+ 31.985975000000053,
+ 32.01655800000003,
+ 32.02827300000001,
+ 32.04126999999994,
+ 32.055986000000075,
+ 32.12071500000002,
+ 32.12690400000008,
+ 32.157571000000075,
+ 32.67156099999988,
+ 32.68647499999997,
+ 34.053568999999925,
+ 34.12493399999994,
+ 44.64811499999996
]
- },
+ }
+ ]
+ },
+ {
+ "targetId": "wasm",
+ "packageName": "@taffyjs/wasm",
+ "hz": 12.605051412336644,
+ "meanMs": 79.33327419999998,
+ "medianMs": 77.55192399999999,
+ "minMs": 73.97064599999976,
+ "maxMs": 92.70648699999992,
+ "p75Ms": 79.60143999999991,
+ "p99Ms": 92.70648699999992,
+ "maxRelativeMarginOfError": 2.7735054999151663,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
{
- "targetId": "wasm",
- "packageName": "@taffyjs/wasm",
- "hz": 5.341411625876875,
- "meanMs": 187.21642705000005,
- "medianMs": 187.16866649999997,
- "minMs": 180.33266600000024,
- "maxMs": 200.0871670000006,
- "p75Ms": 188.30716699999994,
- "p99Ms": 200.0871670000006,
- "maxRelativeMarginOfError": 1.158741587164896,
- "roundCount": 1,
+ "hz": 12.605051412336644,
+ "meanMs": 79.33327419999998,
+ "medianMs": 77.55192399999999,
+ "minMs": 73.97064599999976,
+ "maxMs": 92.70648699999992,
+ "p75Ms": 79.60143999999991,
+ "p99Ms": 92.70648699999992,
+ "relativeMarginOfError": 2.7735054999151663,
"sampleCount": 20,
- "rounds": [
- {
- "hz": 5.341411625876875,
- "meanMs": 187.21642705000005,
- "medianMs": 187.16866649999997,
- "minMs": 180.33266600000024,
- "maxMs": 200.0871670000006,
- "p75Ms": 188.30716699999994,
- "p99Ms": 200.0871670000006,
- "relativeMarginOfError": 1.158741587164896,
- "sampleCount": 20,
- "samplesMs": [
- 180.33266600000024,
- 181.13783300000068,
- 181.69308300000012,
- 182.7284580000005,
- 183.4842920000001,
- 184.18929099999968,
- 185.87024999999994,
- 185.9342919999999,
- 186.6239999999998,
- 186.85679200000004,
- 187.4805409999999,
- 187.86433399999987,
- 187.86916699999983,
- 187.91841700000032,
- 188.30716699999994,
- 189.8380830000001,
- 191.32045800000014,
- 191.85341699999935,
- 192.9388329999997,
- 200.0871670000006
- ]
- }
+ "samplesMs": [
+ 73.97064599999976,
+ 76.21118899999965,
+ 76.23647500000015,
+ 76.39868400000023,
+ 76.89225499999998,
+ 76.95578299999988,
+ 77.07107199999973,
+ 77.118158,
+ 77.16414600000007,
+ 77.52711599999998,
+ 77.57673199999999,
+ 77.74846699999989,
+ 77.81788400000005,
+ 78.26987700000018,
+ 79.60143999999991,
+ 80.48668100000009,
+ 82.29965500000003,
+ 85.25128300000006,
+ 89.36145399999987,
+ 92.70648699999992
]
}
]
},
{
- "id": "wide-tree-1000-leaves",
- "name": "Wide tree: 1,000 leaves",
- "question": "How does the complete public transaction scale for a shallow root with 1,000 children?",
- "description": "A two-level wrapping Flexbox tree stresses broad child lists and repeated public style conversion without introducing random fixture generation.",
- "transaction": "Create every leaf and the root through TaffyTree, compute the layout, then read every unrounded layout snapshot.",
- "parameters": {
- "leafCount": 1000,
- "nodeCount": 1001,
- "depth": 2
- },
- "results": [
+ "targetId": "taffy-yoga",
+ "packageName": "@taffyjs/yoga",
+ "hz": 11.457763177134884,
+ "meanMs": 87.2770701,
+ "medianMs": 85.72671750000006,
+ "minMs": 84.57892300000003,
+ "maxMs": 97.18527899999981,
+ "p75Ms": 87.69937299999992,
+ "p99Ms": 97.18527899999981,
+ "maxRelativeMarginOfError": 1.8554037557549228,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
{
- "targetId": "node",
- "packageName": "@taffyjs/node",
- "hz": 131.6212482754177,
- "meanMs": 7.59755748484848,
- "medianMs": 7.495124999999973,
- "minMs": 7.234083000000055,
- "maxMs": 11.528333999999859,
- "p75Ms": 7.605833000000075,
- "p99Ms": 9.442916999999852,
- "maxRelativeMarginOfError": 1.0176874352675347,
- "roundCount": 1,
- "sampleCount": 132,
- "rounds": [
- {
- "hz": 131.6212482754177,
- "meanMs": 7.59755748484848,
- "medianMs": 7.495124999999973,
- "minMs": 7.234083000000055,
- "maxMs": 11.528333999999859,
- "p75Ms": 7.605833000000075,
- "p99Ms": 9.442916999999852,
- "relativeMarginOfError": 1.0176874352675347,
- "sampleCount": 132,
- "samplesMs": [
- 7.234083000000055,
- 7.235584000000017,
- 7.272917000000007,
- 7.28125,
- 7.305292000000009,
- 7.320749999999975,
- 7.324084000000084,
- 7.327499999999986,
- 7.341625000000022,
- 7.342624999999998,
- 7.355166999999938,
- 7.357666000000108,
- 7.357917000000043,
- 7.358707999999979,
- 7.364167000000066,
- 7.373124999999845,
- 7.381208000000015,
- 7.395250000000033,
- 7.396749999999997,
- 7.397917000000007,
- 7.401040999999964,
- 7.402042000000051,
- 7.403790999999956,
- 7.409291000000053,
- 7.412083000000052,
- 7.4126249999999345,
- 7.4139169999999694,
- 7.414292000000046,
- 7.416666999999961,
- 7.417417000000114,
- 7.419917000000055,
- 7.423291999999947,
- 7.426125000000013,
- 7.432999999999993,
- 7.433375000000069,
- 7.433708999999908,
- 7.434791999999959,
- 7.4378750000000196,
- 7.438874999999939,
- 7.439834000000019,
- 7.442125000000033,
- 7.4427089999999225,
- 7.443708000000015,
- 7.445500000000038,
- 7.449541999999951,
- 7.450582999999938,
- 7.451708999999937,
- 7.453374999999994,
- 7.453708000000006,
- 7.455541000000039,
- 7.455832999999984,
- 7.463000000000079,
- 7.464416999999969,
- 7.468499999999949,
- 7.469875000000002,
- 7.471417000000088,
- 7.474249999999984,
- 7.474624999999946,
- 7.476625000000013,
- 7.483041999999955,
- 7.483749999999986,
- 7.4838750000001255,
- 7.4842499999999745,
- 7.4913329999999405,
- 7.492584000000079,
- 7.495124999999916,
- 7.49512500000003,
- 7.50120800000002,
- 7.502458999999931,
- 7.505708000000027,
- 7.507291000000009,
- 7.510874999999942,
- 7.519666999999913,
- 7.521957999999984,
- 7.522708000000023,
- 7.528332999999975,
- 7.529166999999916,
- 7.532500000000027,
- 7.533208000000059,
- 7.53449999999998,
- 7.535374999999931,
- 7.539041999999995,
- 7.54141699999991,
- 7.546917000000008,
- 7.547249999999963,
- 7.5494580000000155,
- 7.550292000000013,
- 7.552625000000035,
- 7.552833999999962,
- 7.554834000000028,
- 7.56508400000007,
- 7.567332999999962,
- 7.571084000000042,
- 7.584583000000066,
- 7.586584000000016,
- 7.5942079999999805,
- 7.596708000000035,
- 7.597667000000001,
- 7.605833000000075,
- 7.606417000000022,
- 7.607082999999989,
- 7.617250000000013,
- 7.618791999999985,
- 7.633916999999883,
- 7.6378749999998945,
- 7.64487500000007,
- 7.6497909999999365,
- 7.653541000000018,
- 7.658457999999996,
- 7.658832999999959,
- 7.68591600000002,
- 7.68816599999991,
- 7.693458999999848,
- 7.698542000000032,
- 7.714457999999922,
- 7.717624999999998,
- 7.742416999999932,
- 7.785915999999986,
- 7.810125000000028,
- 7.837959000000012,
- 7.848833000000013,
- 7.85916700000007,
- 7.8617080000000215,
- 7.90137500000003,
- 8.132624999999962,
- 8.29162500000001,
- 8.468707999999992,
- 8.505499999999984,
- 8.524499999999989,
- 8.898500000000013,
- 9.442916999999852,
- 11.528333999999859
- ]
- }
+ "hz": 11.457763177134884,
+ "meanMs": 87.2770701,
+ "medianMs": 85.72671750000006,
+ "minMs": 84.57892300000003,
+ "maxMs": 97.18527899999981,
+ "p75Ms": 87.69937299999992,
+ "p99Ms": 97.18527899999981,
+ "relativeMarginOfError": 1.8554037557549228,
+ "sampleCount": 20,
+ "samplesMs": [
+ 84.57892300000003,
+ 84.59799599999997,
+ 84.87982899999997,
+ 84.91560100000015,
+ 85.11709200000018,
+ 85.14436799999999,
+ 85.27075799999989,
+ 85.53038600000014,
+ 85.67347299999983,
+ 85.68510900000001,
+ 85.76832600000012,
+ 86.05070000000023,
+ 86.68652100000008,
+ 87.26585599999999,
+ 87.69937299999992,
+ 88.57030999999961,
+ 88.92376399999989,
+ 91.00510500000019,
+ 94.99263300000007,
+ 97.18527899999981
]
- },
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga-wasm",
+ "packageName": "@taffyjs/yoga-wasm",
+ "hz": 1.9499927359991842,
+ "meanMs": 512.8224231500001,
+ "medianMs": 513.4001355,
+ "minMs": 493.1579700000002,
+ "maxMs": 539.5999039999997,
+ "p75Ms": 517.3239919999996,
+ "p99Ms": 539.5999039999997,
+ "maxRelativeMarginOfError": 1.0857127096833608,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
{
- "targetId": "wasm",
- "packageName": "@taffyjs/wasm",
- "hz": 19.369421209618483,
- "meanMs": 51.627768800000034,
- "medianMs": 50.0532295000001,
- "minMs": 49.44641600000011,
- "maxMs": 62.729082999999946,
- "p75Ms": 51.28899999999999,
- "p99Ms": 62.729082999999946,
- "maxRelativeMarginOfError": 3.2770813207616913,
- "roundCount": 1,
+ "hz": 1.9499927359991842,
+ "meanMs": 512.8224231500001,
+ "medianMs": 513.4001355,
+ "minMs": 493.1579700000002,
+ "maxMs": 539.5999039999997,
+ "p75Ms": 517.3239919999996,
+ "p99Ms": 539.5999039999997,
+ "relativeMarginOfError": 1.0857127096833608,
"sampleCount": 20,
- "rounds": [
- {
- "hz": 19.369421209618483,
- "meanMs": 51.627768800000034,
- "medianMs": 50.0532295000001,
- "minMs": 49.44641600000011,
- "maxMs": 62.729082999999946,
- "p75Ms": 51.28899999999999,
- "p99Ms": 62.729082999999946,
- "relativeMarginOfError": 3.2770813207616913,
- "sampleCount": 20,
- "samplesMs": [
- 49.44641600000011,
- 49.4507500000002,
- 49.65975000000003,
- 49.700833999999986,
- 49.79575,
- 49.83716699999991,
- 49.850584000000026,
- 49.90129100000013,
- 49.9038750000002,
- 49.995125000000144,
- 50.111334000000056,
- 50.4240420000001,
- 50.53429100000005,
- 50.67279200000007,
- 51.28899999999999,
- 52.31487500000003,
- 52.496000000000095,
- 54.06895799999984,
- 60.37345899999991,
- 62.729082999999946
- ]
- }
+ "samplesMs": [
+ 493.1579700000002,
+ 496.7719450000004,
+ 498.514862,
+ 499.3724239999992,
+ 504.61293599999954,
+ 504.97093400000085,
+ 507.1843570000001,
+ 508.9432479999996,
+ 510.4786269999995,
+ 512.013911,
+ 514.7863600000001,
+ 515.1915870000012,
+ 515.4266640000005,
+ 515.4559630000003,
+ 517.3239919999996,
+ 519.7824860000001,
+ 525.1890760000006,
+ 527.7254499999999,
+ 529.9457669999993,
+ 539.5999039999997
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "yoga-layout",
+ "packageName": "yoga-layout",
+ "hz": 83.56995985070309,
+ "meanMs": 11.966022261904758,
+ "medianMs": 11.92302200000006,
+ "minMs": 11.726527000000033,
+ "maxMs": 12.825091999999984,
+ "p75Ms": 12.061253999999963,
+ "p99Ms": 12.825091999999984,
+ "maxRelativeMarginOfError": 0.3826131857395607,
+ "roundCount": 1,
+ "sampleCount": 84,
+ "rounds": [
+ {
+ "hz": 83.56995985070309,
+ "meanMs": 11.966022261904758,
+ "medianMs": 11.92302200000006,
+ "minMs": 11.726527000000033,
+ "maxMs": 12.825091999999984,
+ "p75Ms": 12.061253999999963,
+ "p99Ms": 12.825091999999984,
+ "relativeMarginOfError": 0.3826131857395607,
+ "sampleCount": 84,
+ "samplesMs": [
+ 11.726527000000033,
+ 11.734598000000005,
+ 11.735854000000018,
+ 11.75302099999999,
+ 11.753824000000009,
+ 11.753911000000016,
+ 11.755525000000034,
+ 11.75606700000003,
+ 11.759115000000065,
+ 11.761492999999973,
+ 11.762974999999983,
+ 11.765487000000007,
+ 11.765536999999995,
+ 11.770377999999937,
+ 11.776376000000027,
+ 11.77850699999999,
+ 11.778683000000001,
+ 11.779682999999977,
+ 11.793496000000005,
+ 11.80010500000003,
+ 11.802103000000102,
+ 11.807207999999946,
+ 11.808383999999933,
+ 11.808770999999979,
+ 11.81267099999991,
+ 11.826268999999911,
+ 11.826389000000063,
+ 11.828393000000005,
+ 11.855590000000007,
+ 11.868158999999991,
+ 11.868892000000073,
+ 11.869004000000018,
+ 11.870746000000054,
+ 11.87775499999998,
+ 11.882710999999972,
+ 11.890843000000018,
+ 11.895189000000073,
+ 11.897709000000077,
+ 11.899943000000007,
+ 11.910893999999985,
+ 11.910984000000099,
+ 11.917945000000145,
+ 11.928098999999975,
+ 11.936836999999969,
+ 11.937171000000035,
+ 11.93774099999996,
+ 11.939494999999965,
+ 11.941892000000053,
+ 11.955947999999921,
+ 11.956609999999955,
+ 11.969990999999936,
+ 11.976490999999896,
+ 11.99013100000002,
+ 11.994767000000024,
+ 11.998661000000084,
+ 12.005835999999931,
+ 12.018257999999832,
+ 12.02612600000009,
+ 12.042159999999967,
+ 12.044945999999982,
+ 12.046582000000171,
+ 12.051227000000154,
+ 12.061253999999963,
+ 12.072683999999981,
+ 12.0731609999998,
+ 12.09606000000008,
+ 12.097518000000036,
+ 12.10156599999982,
+ 12.10800299999994,
+ 12.111156999999992,
+ 12.119468999999981,
+ 12.144072999999935,
+ 12.173632999999882,
+ 12.175302000000102,
+ 12.180325000000039,
+ 12.215194999999994,
+ 12.216455999999994,
+ 12.23183199999994,
+ 12.238038999999844,
+ 12.332062000000064,
+ 12.404539999999997,
+ 12.614351999999997,
+ 12.65741399999996,
+ 12.825091999999984
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "wide-wrapping-collection-500-items",
+ "name": "Wide wrapping collection: 500 items",
+ "question": "What does a complete layout transaction cost for one broad wrapping collection?",
+ "description": "A two-level Flexbox collection exercises broad child lists, wrapping, repeated style conversion, child attachment, layout reads, and resource release without random fixture generation.",
+ "transaction": "Create the public root and 500 items, apply styles, attach every item, calculate layout, read left/top/width/height for every node, and release resources when the API requires it.",
+ "parameters": {
+ "itemCount": 500,
+ "nodeCount": 501,
+ "depth": 2,
+ "viewportWidth": 1200
+ },
+ "results": [
+ {
+ "targetId": "node",
+ "packageName": "@taffyjs/node",
+ "hz": 222.76999933202976,
+ "meanMs": 4.488934789237666,
+ "medianMs": 4.309850999999981,
+ "minMs": 4.049193000000059,
+ "maxMs": 8.741088999999874,
+ "p75Ms": 4.471857,
+ "p99Ms": 8.169433000000026,
+ "maxRelativeMarginOfError": 2.1234496364821998,
+ "roundCount": 1,
+ "sampleCount": 223,
+ "rounds": [
+ {
+ "hz": 222.76999933202976,
+ "meanMs": 4.488934789237666,
+ "medianMs": 4.309850999999981,
+ "minMs": 4.049193000000059,
+ "maxMs": 8.741088999999874,
+ "p75Ms": 4.471857,
+ "p99Ms": 8.169433000000026,
+ "relativeMarginOfError": 2.1234496364821998,
+ "sampleCount": 223,
+ "samplesMs": [
+ 4.049193000000059,
+ 4.063962999999944,
+ 4.06546400000002,
+ 4.067036999999914,
+ 4.068563999999924,
+ 4.068774000000076,
+ 4.069544999999948,
+ 4.069643000000042,
+ 4.0715180000001965,
+ 4.074405999999954,
+ 4.0762809999999945,
+ 4.079334000000017,
+ 4.087612999999919,
+ 4.087712999999894,
+ 4.10169099999996,
+ 4.109507000000008,
+ 4.115747000000056,
+ 4.116307000000006,
+ 4.119235000000117,
+ 4.120281999999975,
+ 4.123598000000015,
+ 4.124847000000045,
+ 4.129046000000017,
+ 4.129465000000096,
+ 4.131124,
+ 4.133415999999897,
+ 4.135887000000025,
+ 4.135986000000003,
+ 4.137247000000002,
+ 4.137436000000093,
+ 4.137519999999995,
+ 4.137651000000005,
+ 4.141155000000026,
+ 4.144058000000086,
+ 4.148233000000005,
+ 4.149203999999941,
+ 4.150729999999953,
+ 4.151140000000055,
+ 4.15124400000002,
+ 4.154364999999984,
+ 4.154539999999997,
+ 4.154586999999992,
+ 4.1576069999999845,
+ 4.158682999999996,
+ 4.164749999999913,
+ 4.17071199999998,
+ 4.173556999999846,
+ 4.174183999999968,
+ 4.174398999999994,
+ 4.175052000000051,
+ 4.176064999999994,
+ 4.178157999999939,
+ 4.1815630000000965,
+ 4.183442000000014,
+ 4.183907999999974,
+ 4.188370999999961,
+ 4.1888720000000035,
+ 4.189818000000059,
+ 4.1918260000001055,
+ 4.193601000000001,
+ 4.197933999999918,
+ 4.202113000000054,
+ 4.202386999999987,
+ 4.20359499999995,
+ 4.205061999999998,
+ 4.206376999999975,
+ 4.207229000000098,
+ 4.208221999999978,
+ 4.21119699999997,
+ 4.2117359999999735,
+ 4.216236999999978,
+ 4.216690000000085,
+ 4.221406000000002,
+ 4.222901000000093,
+ 4.226787999999942,
+ 4.236768999999981,
+ 4.2382630000000745,
+ 4.241020999999989,
+ 4.2432130000000825,
+ 4.246511999999939,
+ 4.246536999999989,
+ 4.248895000000175,
+ 4.250045,
+ 4.252461000000039,
+ 4.256069000000025,
+ 4.267735000000016,
+ 4.274088000000006,
+ 4.275119000000018,
+ 4.276798999999983,
+ 4.276881999999887,
+ 4.277827000000002,
+ 4.280016000000046,
+ 4.282617000000073,
+ 4.2827950000000214,
+ 4.282886000000076,
+ 4.2848920000000135,
+ 4.285483999999997,
+ 4.28867200000002,
+ 4.29056700000001,
+ 4.291525999999976,
+ 4.293412999999987,
+ 4.294466999999997,
+ 4.294604999999933,
+ 4.295294999999896,
+ 4.301233000000025,
+ 4.301584000000048,
+ 4.303503999999975,
+ 4.30479600000001,
+ 4.305929999999989,
+ 4.307132000000024,
+ 4.307812000000013,
+ 4.309850999999981,
+ 4.312335999999959,
+ 4.316540000000032,
+ 4.3199030000000675,
+ 4.324539999999956,
+ 4.327173000000016,
+ 4.328724999999963,
+ 4.329201000000012,
+ 4.330206999999973,
+ 4.332458999999972,
+ 4.333233999999948,
+ 4.337266999999997,
+ 4.338451000000077,
+ 4.3387050000000045,
+ 4.342790000000036,
+ 4.344437999999968,
+ 4.344777000000022,
+ 4.3500759999999445,
+ 4.35717099999988,
+ 4.357494000000088,
+ 4.358342999999991,
+ 4.362292000000025,
+ 4.36235099999999,
+ 4.364129000000048,
+ 4.364958000000115,
+ 4.37628699999982,
+ 4.385169000000133,
+ 4.386119000000008,
+ 4.386131999999975,
+ 4.386389000000008,
+ 4.39118899999994,
+ 4.395342999999912,
+ 4.396261999999979,
+ 4.397767000000044,
+ 4.408153999999968,
+ 4.408378999999968,
+ 4.409203000000048,
+ 4.4134559999999965,
+ 4.41575899999998,
+ 4.41830200000004,
+ 4.418476999999939,
+ 4.418959000000029,
+ 4.426362000000154,
+ 4.4287389999999505,
+ 4.4287910000000466,
+ 4.430569999999989,
+ 4.4343920000000026,
+ 4.4416009999999915,
+ 4.44250199999999,
+ 4.443140999999969,
+ 4.445834999999988,
+ 4.445868000000019,
+ 4.44872799999996,
+ 4.450220999999999,
+ 4.452412000000095,
+ 4.466936000000032,
+ 4.471857,
+ 4.472841000000017,
+ 4.480692999999974,
+ 4.484388999999965,
+ 4.488824000000022,
+ 4.489331999999877,
+ 4.493577999999957,
+ 4.496697999999924,
+ 4.502144000000044,
+ 4.505287000000067,
+ 4.510719999999992,
+ 4.511070000000018,
+ 4.511416999999938,
+ 4.517165999999861,
+ 4.526876000000129,
+ 4.529014000000018,
+ 4.534464999999955,
+ 4.534602999999834,
+ 4.537375999999995,
+ 4.540027000000009,
+ 4.542093999999906,
+ 4.545460000000048,
+ 4.546009000000026,
+ 4.547260000000051,
+ 4.557177000000024,
+ 4.561718000000042,
+ 4.563783000000058,
+ 4.581329000000039,
+ 4.62346500000001,
+ 4.6679809999999975,
+ 4.684031999999888,
+ 4.694428000000016,
+ 4.7179270000000315,
+ 4.736994999999979,
+ 4.7953659999999445,
+ 4.797751999999946,
+ 4.81480700000003,
+ 4.857213000000002,
+ 4.859419000000003,
+ 4.862292999999909,
+ 4.867476000000011,
+ 4.961680000000001,
+ 4.980286999999862,
+ 5.0313110000000165,
+ 5.561482999999953,
+ 5.634512000000086,
+ 6.373641999999904,
+ 6.41275399999995,
+ 6.978515000000016,
+ 7.039257999999961,
+ 7.270367999999962,
+ 8.119885999999951,
+ 8.119985999999926,
+ 8.169433000000026,
+ 8.464838999999984,
+ 8.741088999999874
]
}
]
},
{
- "id": "deep-tree-511-nodes",
- "name": "Deep tree: 511 nodes",
- "question": "How does the complete public transaction scale for a near-balanced hierarchy with 9 levels?",
- "description": "A deterministic hierarchy with at most two children per node alternates row and column Flexbox containers, exercising nested traversal without adding random-number generation to the measured work.",
- "transaction": "Create all leaves and ancestors through TaffyTree, compute the layout, then read every unrounded layout snapshot.",
- "parameters": {
- "leafCount": 256,
- "nodeCount": 511,
- "depth": 9,
- "maximumBranchingFactor": 2
- },
- "results": [
+ "targetId": "wasm",
+ "packageName": "@taffyjs/wasm",
+ "hz": 30.77805706062544,
+ "meanMs": 32.490679903225804,
+ "medianMs": 31.079093000000057,
+ "minMs": 30.465326000000005,
+ "maxMs": 47.34987000000001,
+ "p75Ms": 32.641239999999925,
+ "p99Ms": 47.34987000000001,
+ "maxRelativeMarginOfError": 4.004533786025577,
+ "roundCount": 1,
+ "sampleCount": 31,
+ "rounds": [
{
- "targetId": "node",
- "packageName": "@taffyjs/node",
- "hz": 40.977487992534115,
- "meanMs": 24.40364329268292,
- "medianMs": 24.127749999999992,
- "minMs": 23.215374999999995,
- "maxMs": 32.67770900000005,
- "p75Ms": 24.455999999999904,
- "p99Ms": 32.67770900000005,
- "maxRelativeMarginOfError": 1.9440637179969313,
- "roundCount": 1,
- "sampleCount": 41,
- "rounds": [
- {
- "hz": 40.977487992534115,
- "meanMs": 24.40364329268292,
- "medianMs": 24.127749999999992,
- "minMs": 23.215374999999995,
- "maxMs": 32.67770900000005,
- "p75Ms": 24.455999999999904,
- "p99Ms": 32.67770900000005,
- "relativeMarginOfError": 1.9440637179969313,
- "sampleCount": 41,
- "samplesMs": [
- 23.215374999999995,
- 23.288583000000017,
- 23.42775000000006,
- 23.472707999999784,
- 23.527665999999954,
- 23.591916999999967,
- 23.62262499999997,
- 23.62462500000015,
- 23.63016700000003,
- 23.65862500000003,
- 23.731707999999912,
- 23.774415999999974,
- 23.856375000000014,
- 23.875082999999904,
- 23.885125000000016,
- 23.895166000000017,
- 23.923208999999815,
- 23.934292000000028,
- 24.026458000000048,
- 24.04583299999996,
- 24.127749999999992,
- 24.14779199999998,
- 24.148708000000056,
- 24.221916999999962,
- 24.23362499999996,
- 24.2467079999999,
- 24.336708000000044,
- 24.358291999999892,
- 24.371000000000095,
- 24.41466700000001,
- 24.455999999999904,
- 24.507250000000113,
- 24.61287500000003,
- 24.654042000000004,
- 24.81854199999998,
- 24.86816699999997,
- 25.146749999999997,
- 25.266542000000072,
- 26.028832999999963,
- 26.89779199999998,
- 32.67770900000005
- ]
- }
+ "hz": 30.77805706062544,
+ "meanMs": 32.490679903225804,
+ "medianMs": 31.079093000000057,
+ "minMs": 30.465326000000005,
+ "maxMs": 47.34987000000001,
+ "p75Ms": 32.641239999999925,
+ "p99Ms": 47.34987000000001,
+ "relativeMarginOfError": 4.004533786025577,
+ "sampleCount": 31,
+ "samplesMs": [
+ 30.465326000000005,
+ 30.47716700000001,
+ 30.53676399999995,
+ 30.651225000000068,
+ 30.65272600000003,
+ 30.670732000000044,
+ 30.678724999999986,
+ 30.6816859999999,
+ 30.752661999999987,
+ 30.782882999999856,
+ 30.804769999999962,
+ 30.896528999999987,
+ 31.003947000000153,
+ 31.007652000000007,
+ 31.038430000000062,
+ 31.079093000000057,
+ 31.212587999999982,
+ 31.227997000000073,
+ 31.329050999999936,
+ 31.395266999999876,
+ 31.609692999999993,
+ 31.98886399999992,
+ 32.359537000000046,
+ 32.641239999999925,
+ 32.836724000000004,
+ 32.93947000000003,
+ 34.16037400000005,
+ 35.930183000000056,
+ 38.26432799999998,
+ 39.785574,
+ 47.34987000000001
]
- },
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga",
+ "packageName": "@taffyjs/yoga",
+ "hz": 19.93793126605152,
+ "meanMs": 50.15565489999999,
+ "medianMs": 49.48691299999996,
+ "minMs": 47.015695999999934,
+ "maxMs": 59.28564999999992,
+ "p75Ms": 50.297088999999914,
+ "p99Ms": 59.28564999999992,
+ "maxRelativeMarginOfError": 3.0494602531042974,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
{
- "targetId": "wasm",
- "packageName": "@taffyjs/wasm",
- "hz": 18.881221539508722,
- "meanMs": 52.96267499999999,
- "medianMs": 52.242291499999965,
- "minMs": 50.35908399999994,
- "maxMs": 58.425208999999995,
- "p75Ms": 53.8125,
- "p99Ms": 58.425208999999995,
- "maxRelativeMarginOfError": 2.018542163236978,
- "roundCount": 1,
+ "hz": 19.93793126605152,
+ "meanMs": 50.15565489999999,
+ "medianMs": 49.48691299999996,
+ "minMs": 47.015695999999934,
+ "maxMs": 59.28564999999992,
+ "p75Ms": 50.297088999999914,
+ "p99Ms": 59.28564999999992,
+ "relativeMarginOfError": 3.0494602531042974,
"sampleCount": 20,
- "rounds": [
- {
- "hz": 18.881221539508722,
- "meanMs": 52.96267499999999,
- "medianMs": 52.242291499999965,
- "minMs": 50.35908399999994,
- "maxMs": 58.425208999999995,
- "p75Ms": 53.8125,
- "p99Ms": 58.425208999999995,
- "relativeMarginOfError": 2.018542163236978,
- "sampleCount": 20,
- "samplesMs": [
- 50.35908399999994,
- 50.8020419999998,
- 50.91737499999999,
- 51.069875000000025,
- 51.17320799999993,
- 51.52666700000009,
- 51.7209170000001,
- 51.843665999999985,
- 52.03337499999998,
- 52.228417000000036,
- 52.256165999999894,
- 52.416624999999954,
- 52.62258300000008,
- 53.27870800000005,
- 53.8125,
- 53.82999999999993,
- 54.8454999999999,
- 56.25420800000006,
- 57.837375000000065,
- 58.425208999999995
- ]
- }
+ "samplesMs": [
+ 47.015695999999934,
+ 47.29416500000002,
+ 47.30189399999995,
+ 47.33051599999999,
+ 47.400081,
+ 47.60326299999997,
+ 48.527904000000035,
+ 49.19388300000014,
+ 49.34185700000012,
+ 49.47799400000008,
+ 49.49583199999984,
+ 49.5216039999998,
+ 50.071815000000015,
+ 50.21283100000005,
+ 50.297088999999914,
+ 50.51424300000008,
+ 51.66744300000005,
+ 55.6241349999998,
+ 55.935203,
+ 59.28564999999992
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga-wasm",
+ "packageName": "@taffyjs/yoga-wasm",
+ "hz": 2.5986735350557577,
+ "meanMs": 384.81170740000005,
+ "medianMs": 380.50996750000013,
+ "minMs": 371.1495699999996,
+ "maxMs": 432.514999,
+ "p75Ms": 390.1878820000002,
+ "p99Ms": 432.514999,
+ "maxRelativeMarginOfError": 1.668728501602073,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
+ {
+ "hz": 2.5986735350557577,
+ "meanMs": 384.81170740000005,
+ "medianMs": 380.50996750000013,
+ "minMs": 371.1495699999996,
+ "maxMs": 432.514999,
+ "p75Ms": 390.1878820000002,
+ "p99Ms": 432.514999,
+ "relativeMarginOfError": 1.668728501602073,
+ "sampleCount": 20,
+ "samplesMs": [
+ 371.1495699999996,
+ 372.5679620000001,
+ 374.2209409999996,
+ 374.7489949999999,
+ 376.4393970000001,
+ 376.7239090000003,
+ 377.65588900000057,
+ 379.29967600000055,
+ 380.1608350000006,
+ 380.324337,
+ 380.69559800000025,
+ 382.65063699999973,
+ 383.08883799999967,
+ 383.64439200000015,
+ 390.1878820000002,
+ 392.2308359999988,
+ 394.0212929999998,
+ 395.7463600000001,
+ 398.16180200000053,
+ 432.514999
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "yoga-layout",
+ "packageName": "yoga-layout",
+ "hz": 623.1740283171698,
+ "meanMs": 1.6046881842948715,
+ "medianMs": 1.5337274999999977,
+ "minMs": 1.5068810000000212,
+ "maxMs": 4.092967000000044,
+ "p75Ms": 1.5952010000000882,
+ "p99Ms": 3.2777329999998983,
+ "maxRelativeMarginOfError": 1.3476945647355663,
+ "roundCount": 1,
+ "sampleCount": 624,
+ "rounds": [
+ {
+ "hz": 623.1740283171698,
+ "meanMs": 1.6046881842948715,
+ "medianMs": 1.5337274999999977,
+ "minMs": 1.5068810000000212,
+ "maxMs": 4.092967000000044,
+ "p75Ms": 1.5952010000000882,
+ "p99Ms": 3.2777329999998983,
+ "relativeMarginOfError": 1.3476945647355663,
+ "sampleCount": 624,
+ "samplesMs": [
+ 1.5068810000000212,
+ 1.5113210000000663,
+ 1.511908999999946,
+ 1.5125009999999293,
+ 1.5135520000000042,
+ 1.5135940000000119,
+ 1.5140620000000808,
+ 1.514161999999942,
+ 1.5143059999999195,
+ 1.5144769999999426,
+ 1.5145750000000362,
+ 1.5154890000000023,
+ 1.5157140000000027,
+ 1.515760999999884,
+ 1.5157860000000483,
+ 1.5161110000000235,
+ 1.516114000000016,
+ 1.5164139999999406,
+ 1.5166550000000143,
+ 1.5167569999999841,
+ 1.5172840000000178,
+ 1.517374000000018,
+ 1.5175239999999803,
+ 1.5175879999999324,
+ 1.5177390000001196,
+ 1.5178280000000086,
+ 1.5178679999999076,
+ 1.5179490000000442,
+ 1.517953000000034,
+ 1.517959000000019,
+ 1.518032000000062,
+ 1.5181079999999838,
+ 1.518226000000027,
+ 1.5182419999999865,
+ 1.5182600000000548,
+ 1.518596000000116,
+ 1.5187169999999242,
+ 1.518823999999995,
+ 1.518823999999995,
+ 1.5188339999999698,
+ 1.518880000000081,
+ 1.5191019999999753,
+ 1.5191079999999602,
+ 1.5193429999999353,
+ 1.5193610000000035,
+ 1.5194020000000137,
+ 1.5194329999999354,
+ 1.5194360000000415,
+ 1.5195929999999862,
+ 1.5196500000001834,
+ 1.5196609999999282,
+ 1.5197689999999966,
+ 1.5198500000001332,
+ 1.5198570000000018,
+ 1.519894000000022,
+ 1.5198970000000145,
+ 1.5199069999999892,
+ 1.5199460000000045,
+ 1.5200040000000854,
+ 1.5200530000000754,
+ 1.5200669999999263,
+ 1.5201489999999467,
+ 1.52021400000001,
+ 1.5202370000000656,
+ 1.5203319999999394,
+ 1.520371999999952,
+ 1.5204430000000002,
+ 1.520475000000033,
+ 1.520481000000018,
+ 1.5206609999999046,
+ 1.5206620000000157,
+ 1.5207719999998517,
+ 1.5208640000000742,
+ 1.520915000000059,
+ 1.5209600000000592,
+ 1.521003999999948,
+ 1.5210389999999734,
+ 1.5210889999999608,
+ 1.5210970000000543,
+ 1.5211450000000468,
+ 1.5212249999999585,
+ 1.5212319999999409,
+ 1.5212340000000495,
+ 1.5212349999999333,
+ 1.5212900000000218,
+ 1.5212999999998829,
+ 1.5213629999999512,
+ 1.521394999999984,
+ 1.5214190000000372,
+ 1.5214270000001306,
+ 1.5214919999998529,
+ 1.5215839999999616,
+ 1.5216009999999187,
+ 1.5216259999999693,
+ 1.521667999999977,
+ 1.5216929999999138,
+ 1.5217589999999745,
+ 1.5217909999998938,
+ 1.5218029999999771,
+ 1.5218130000000656,
+ 1.5218580000000657,
+ 1.521923999999899,
+ 1.52198199999998,
+ 1.5220580000000155,
+ 1.5220689999999877,
+ 1.5220990000000256,
+ 1.522132000000056,
+ 1.5221369999999297,
+ 1.5221619999999803,
+ 1.5221870000000308,
+ 1.522279000000026,
+ 1.522393999999963,
+ 1.5224319999999807,
+ 1.5224729999999909,
+ 1.5225000000000364,
+ 1.5225029999999151,
+ 1.5226049999999987,
+ 1.5226760000000468,
+ 1.5226840000000266,
+ 1.522828000000004,
+ 1.5228650000000243,
+ 1.5228759999999966,
+ 1.5229009999999334,
+ 1.5229570000000194,
+ 1.5230889999997999,
+ 1.5231410000001233,
+ 1.523190999999997,
+ 1.5232239999998,
+ 1.5232770000000073,
+ 1.5232849999999871,
+ 1.5233670000000075,
+ 1.5233729999999923,
+ 1.523384999999962,
+ 1.5233990000000404,
+ 1.5234049999999115,
+ 1.5234700000000885,
+ 1.5234819999998308,
+ 1.5235079999999925,
+ 1.523541000000023,
+ 1.5235910000000104,
+ 1.5237939999999526,
+ 1.5238100000000259,
+ 1.523824999999988,
+ 1.5239129999999932,
+ 1.5239160000000993,
+ 1.5240569999999707,
+ 1.5240700000000516,
+ 1.5241150000000516,
+ 1.5241419999999835,
+ 1.5241480000001957,
+ 1.5243070000001353,
+ 1.5243189999999913,
+ 1.5243420000001606,
+ 1.5243550000000141,
+ 1.5244890000001305,
+ 1.5245919999999842,
+ 1.5246569999999338,
+ 1.5248000000001412,
+ 1.524801000000025,
+ 1.5249569999999721,
+ 1.524989000000005,
+ 1.525034000000005,
+ 1.5251070000000482,
+ 1.5251260000000002,
+ 1.5251719999999978,
+ 1.525180999999975,
+ 1.5252029999999195,
+ 1.5252080000000205,
+ 1.5252379999999448,
+ 1.5252799999998388,
+ 1.5252929999999196,
+ 1.5253669999999602,
+ 1.5254120000001876,
+ 1.5254180000000588,
+ 1.5255819999999858,
+ 1.525609999999915,
+ 1.5256239999998797,
+ 1.5256749999998647,
+ 1.5257320000000618,
+ 1.5257980000000089,
+ 1.5258959999999888,
+ 1.5259779999998955,
+ 1.5260829999999714,
+ 1.5260929999999462,
+ 1.526096999999936,
+ 1.526104999999916,
+ 1.526124999999979,
+ 1.5261649999999918,
+ 1.5262159999999767,
+ 1.526344999999992,
+ 1.5263899999999921,
+ 1.526403000000073,
+ 1.5264519999999493,
+ 1.52646900000002,
+ 1.5265130000000227,
+ 1.5265590000000202,
+ 1.526640000000043,
+ 1.5266719999999623,
+ 1.5267120000000887,
+ 1.5267409999999018,
+ 1.526745000000119,
+ 1.526781999999912,
+ 1.526783000000023,
+ 1.526785000000018,
+ 1.5268419999999878,
+ 1.526933999999983,
+ 1.5269359999999779,
+ 1.526988000000074,
+ 1.5270100000000184,
+ 1.5270349999999553,
+ 1.5270680000000993,
+ 1.527105000000006,
+ 1.5272079999999733,
+ 1.527257000000077,
+ 1.5274050000000443,
+ 1.5274600000000191,
+ 1.527460999999903,
+ 1.5274780000000874,
+ 1.5275139999998828,
+ 1.527604999999994,
+ 1.527655999999979,
+ 1.5276629999998477,
+ 1.5277509999999666,
+ 1.527757000000065,
+ 1.5278720000000021,
+ 1.5279410000000553,
+ 1.5279869999999391,
+ 1.5280279999999493,
+ 1.52804500000002,
+ 1.528079000000048,
+ 1.528143,
+ 1.5281729999999243,
+ 1.5281770000001416,
+ 1.5281840000000102,
+ 1.5282790000001114,
+ 1.52833499999997,
+ 1.5283390000000736,
+ 1.5283699999999953,
+ 1.5284179999999878,
+ 1.5284280000000763,
+ 1.5287590000000364,
+ 1.5287880000000769,
+ 1.5288069999999152,
+ 1.5288600000000088,
+ 1.528874999999971,
+ 1.5288850000000593,
+ 1.5289769999999407,
+ 1.5290110000000823,
+ 1.529045999999994,
+ 1.5292030000000523,
+ 1.529247999999825,
+ 1.5293260000000828,
+ 1.529480000000035,
+ 1.5298250000000735,
+ 1.5299709999999322,
+ 1.5299920000001066,
+ 1.5300170000000435,
+ 1.5300979999999527,
+ 1.5301230000000032,
+ 1.53024599999992,
+ 1.5303099999999858,
+ 1.5304290000001401,
+ 1.5305309999999963,
+ 1.5306580000001304,
+ 1.5307259999999587,
+ 1.5307990000000018,
+ 1.5308279999999286,
+ 1.530905999999959,
+ 1.5309389999999894,
+ 1.5310380000000805,
+ 1.531158000000005,
+ 1.531244999999899,
+ 1.5312700000000632,
+ 1.5313109999999597,
+ 1.5313300000000254,
+ 1.531409999999937,
+ 1.5314390000000913,
+ 1.5315120000000206,
+ 1.5316159999999854,
+ 1.5316259999999602,
+ 1.5316760000000613,
+ 1.5316940000000159,
+ 1.5317569999999705,
+ 1.5317850000000135,
+ 1.5318980000000693,
+ 1.5319469999999455,
+ 1.5319660000000113,
+ 1.532064999999875,
+ 1.5320829999999432,
+ 1.53211199999987,
+ 1.5322709999999233,
+ 1.5322969999999714,
+ 1.5322979999999689,
+ 1.5325599999999895,
+ 1.5325760000000628,
+ 1.5326009999999997,
+ 1.5326350000000275,
+ 1.5326609999999619,
+ 1.5326930000001084,
+ 1.5327179999999316,
+ 1.5327760000000126,
+ 1.5327859999999873,
+ 1.5328590000000304,
+ 1.5328630000000203,
+ 1.532993999999917,
+ 1.5329959999999119,
+ 1.5332750000000033,
+ 1.5333749999999782,
+ 1.5334490000000187,
+ 1.5335360000001401,
+ 1.5336249999999154,
+ 1.5336580000000595,
+ 1.533796999999936,
+ 1.5338600000000042,
+ 1.5343090000000075,
+ 1.5344740000000456,
+ 1.5346840000001976,
+ 1.534783999999945,
+ 1.5350290000000086,
+ 1.5351419999999507,
+ 1.5352450000000317,
+ 1.5352679999999737,
+ 1.535380000000032,
+ 1.5354000000000951,
+ 1.5357399999999188,
+ 1.535804999999982,
+ 1.5358099999999695,
+ 1.5359169999999267,
+ 1.5360670000000027,
+ 1.5360940000000483,
+ 1.5362179999999626,
+ 1.5362630000000763,
+ 1.536540000000059,
+ 1.5365409999999429,
+ 1.5365780000001905,
+ 1.536587999999938,
+ 1.5366090000001122,
+ 1.5366260000000693,
+ 1.536880999999994,
+ 1.5369650000000092,
+ 1.5371729999999388,
+ 1.537270000000035,
+ 1.53741500000001,
+ 1.5377369999999928,
+ 1.5377620000000434,
+ 1.5377889999999752,
+ 1.5378600000000233,
+ 1.5380640000000767,
+ 1.5381239999999252,
+ 1.5383300000000872,
+ 1.5385960000000978,
+ 1.538626000000022,
+ 1.5387069999999312,
+ 1.5387390000000778,
+ 1.5388149999999996,
+ 1.5388520000000199,
+ 1.5389850000000251,
+ 1.5395149999999376,
+ 1.5399970000000849,
+ 1.5407060000000001,
+ 1.5410349999999653,
+ 1.541170999999963,
+ 1.541445000000067,
+ 1.5415080000000216,
+ 1.5415929999999207,
+ 1.5416090000001077,
+ 1.5417830000000095,
+ 1.5427559999999403,
+ 1.543284999999969,
+ 1.5434169999999767,
+ 1.5434870000000274,
+ 1.5438890000000356,
+ 1.5443159999999807,
+ 1.5450929999999516,
+ 1.5453089999999747,
+ 1.5455109999998058,
+ 1.5456419999999298,
+ 1.545716000000084,
+ 1.5462710000001607,
+ 1.5463330000000042,
+ 1.5463959999999588,
+ 1.546754999999962,
+ 1.5472770000000082,
+ 1.5478180000000066,
+ 1.548208000000045,
+ 1.5483429999999316,
+ 1.5485960000000887,
+ 1.548797999999806,
+ 1.5489219999999477,
+ 1.548949999999877,
+ 1.5501110000000153,
+ 1.5501349999999547,
+ 1.550897999999961,
+ 1.5513519999999517,
+ 1.5522569999999405,
+ 1.5526800000000094,
+ 1.5531760000000077,
+ 1.5539570000000822,
+ 1.5568470000000616,
+ 1.5568530000000464,
+ 1.5570660000000203,
+ 1.5570770000000493,
+ 1.557612000000006,
+ 1.5580130000000736,
+ 1.5583970000000136,
+ 1.5584120000000894,
+ 1.5586570000000393,
+ 1.5591309999999794,
+ 1.5594310000000178,
+ 1.560181,
+ 1.5602510000000507,
+ 1.5603830000000016,
+ 1.5606769999999415,
+ 1.5609249999999975,
+ 1.5611019999999485,
+ 1.5611129999999775,
+ 1.561238000000003,
+ 1.5615479999999593,
+ 1.5617029999999659,
+ 1.5617799999999988,
+ 1.5622940000000085,
+ 1.5625159999999596,
+ 1.5626270000000204,
+ 1.5633070000000089,
+ 1.5633980000000065,
+ 1.5635180000001583,
+ 1.5636670000000095,
+ 1.5643630000000712,
+ 1.564408999999955,
+ 1.5644939999999679,
+ 1.5647820000000365,
+ 1.565987000000007,
+ 1.5660310000000095,
+ 1.5663200000000188,
+ 1.566549000000009,
+ 1.5666120000000774,
+ 1.5673380000000066,
+ 1.5680940000000305,
+ 1.5687789999999495,
+ 1.5696370000000002,
+ 1.569864999999993,
+ 1.5701069999999504,
+ 1.570483999999965,
+ 1.5711259999999925,
+ 1.5716429999999946,
+ 1.5717160000000376,
+ 1.5717450000000213,
+ 1.5722399999999652,
+ 1.5728449999999157,
+ 1.5748709999999733,
+ 1.5750520000000279,
+ 1.575755000000072,
+ 1.5762600000000475,
+ 1.5762730000000147,
+ 1.5763539999999807,
+ 1.5777689999999893,
+ 1.5786889999999971,
+ 1.5791229999999814,
+ 1.579971999999998,
+ 1.5801549999999907,
+ 1.5807320000000118,
+ 1.5819760000000542,
+ 1.5822520000000395,
+ 1.5855629999999792,
+ 1.5856810000000223,
+ 1.5858029999999985,
+ 1.586104999999975,
+ 1.5952010000000882,
+ 1.5956219999999348,
+ 1.5957809999999881,
+ 1.597676999999976,
+ 1.599401999999941,
+ 1.5999229999999898,
+ 1.6005870000001323,
+ 1.6007620000000315,
+ 1.6009389999999257,
+ 1.601495,
+ 1.601805000000013,
+ 1.6020750000000135,
+ 1.602141999999958,
+ 1.604088000000047,
+ 1.6042140000000131,
+ 1.6053300000000945,
+ 1.6057759999999917,
+ 1.6059240000001864,
+ 1.6061059999999543,
+ 1.6062990000000354,
+ 1.606324000000086,
+ 1.6066740000001118,
+ 1.6068119999999908,
+ 1.6074009999999817,
+ 1.6080480000000534,
+ 1.6082329999999274,
+ 1.608664000000033,
+ 1.6093329999999924,
+ 1.609416999999894,
+ 1.6109109999999873,
+ 1.611065999999937,
+ 1.6116099999999278,
+ 1.6118880000001354,
+ 1.6122729999999592,
+ 1.612622999999985,
+ 1.6132189999998445,
+ 1.613283000000024,
+ 1.614233000000013,
+ 1.6146250000000464,
+ 1.6154489999998987,
+ 1.6155320000000302,
+ 1.615760000000023,
+ 1.61601799999994,
+ 1.6162229999999909,
+ 1.6166350000000875,
+ 1.6171620000000075,
+ 1.6177450000000135,
+ 1.618125000000191,
+ 1.6187459999999874,
+ 1.6192569999999478,
+ 1.6196379999998953,
+ 1.6199890000000323,
+ 1.620136999999886,
+ 1.620486000000028,
+ 1.622318999999834,
+ 1.6224019999999655,
+ 1.6228269999999156,
+ 1.622989000000075,
+ 1.6242140000000518,
+ 1.624904000000015,
+ 1.6251949999999624,
+ 1.628056000000015,
+ 1.6287880000000996,
+ 1.6293939999999338,
+ 1.6300199999998313,
+ 1.6303659999998672,
+ 1.6307119999999031,
+ 1.6312739999999621,
+ 1.6313519999999926,
+ 1.6320800000000872,
+ 1.6324190000000272,
+ 1.6331350000000384,
+ 1.6338440000000674,
+ 1.633846999999946,
+ 1.634708000000046,
+ 1.6350810000000138,
+ 1.6360709999999017,
+ 1.6361540000000332,
+ 1.6375800000000709,
+ 1.637617999999975,
+ 1.6401949999999488,
+ 1.6408489999998892,
+ 1.64318099999997,
+ 1.6448499999999058,
+ 1.6466259999999693,
+ 1.6469770000001063,
+ 1.6484579999998914,
+ 1.6502359999999499,
+ 1.6541500000000724,
+ 1.6583100000000286,
+ 1.6586069999998472,
+ 1.6589199999999664,
+ 1.6591029999999591,
+ 1.6596829999999727,
+ 1.660626000000093,
+ 1.6608720000000403,
+ 1.661248999999998,
+ 1.6626099999998587,
+ 1.6669610000000148,
+ 1.667096000000015,
+ 1.6676899999999932,
+ 1.6696649999998954,
+ 1.6701859999998305,
+ 1.6707549999998719,
+ 1.6716219999999566,
+ 1.674334999999985,
+ 1.6757090000000971,
+ 1.6759819999999763,
+ 1.6765910000000304,
+ 1.6767839999999978,
+ 1.6788400000000365,
+ 1.6800200000000132,
+ 1.6837370000000078,
+ 1.6878600000000006,
+ 1.688664000000017,
+ 1.6887140000000045,
+ 1.6900210000000015,
+ 1.690900000000056,
+ 1.6919020000000273,
+ 1.6925959999999804,
+ 1.6982380000000603,
+ 1.7017290000000003,
+ 1.7025219999999877,
+ 1.7048690000000306,
+ 1.7114900000000262,
+ 1.7226720000001023,
+ 1.7251080000000343,
+ 1.7305840000000217,
+ 1.7315399999999954,
+ 1.7436250000000655,
+ 1.747461000000044,
+ 1.7509249999999383,
+ 1.75558500000011,
+ 1.7721450000000232,
+ 1.7962289999999825,
+ 1.8140569999999911,
+ 1.978033000000039,
+ 2.0860809999999788,
+ 2.101504000000034,
+ 2.1200300000000425,
+ 2.1267139999999927,
+ 2.135405999999989,
+ 2.4772649999999885,
+ 2.5071960000000217,
+ 2.6186230000000705,
+ 3.2048279999999068,
+ 3.207936000000018,
+ 3.2314890000000105,
+ 3.2342909999999847,
+ 3.2385600000000068,
+ 3.2777329999998983,
+ 3.2912300000000414,
+ 3.3835359999999923,
+ 3.3863060000000473,
+ 3.520934000000011,
+ 3.926574999999957,
+ 4.092967000000044
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "coding-agent-chat-initial-layout",
+ "name": "Coding-agent chat: initial layout",
+ "question": "What does it cost to build, measure, lay out, read, and release a modeled coding-agent screen?",
+ "description": "A fixed desktop chat fixture contains a session sidebar, measured labels, a message transcript, and a composer. Text callbacks use the same intrinsic-size function and constraints for both public APIs.",
+ "transaction": "Create the public tree from fixed fixture data, calculate with public text-measure callbacks, read left/top/width/height for every node, and release resources when the API requires it.",
+ "parameters": {
+ "nodeCount": 285,
+ "measuredNodeCount": 51,
+ "sessionCount": 18,
+ "messageCount": 32,
+ "viewportWidth": 1280,
+ "viewportHeight": 800
+ },
+ "results": [
+ {
+ "targetId": "node",
+ "packageName": "@taffyjs/node",
+ "hz": 21.317890312504712,
+ "meanMs": 46.908956999999994,
+ "medianMs": 46.21209649999997,
+ "minMs": 43.92261099999996,
+ "maxMs": 55.4203849999999,
+ "p75Ms": 48.01090900000008,
+ "p99Ms": 55.4203849999999,
+ "maxRelativeMarginOfError": 3.303727775462616,
+ "roundCount": 1,
+ "sampleCount": 22,
+ "rounds": [
+ {
+ "hz": 21.317890312504712,
+ "meanMs": 46.908956999999994,
+ "medianMs": 46.21209649999997,
+ "minMs": 43.92261099999996,
+ "maxMs": 55.4203849999999,
+ "p75Ms": 48.01090900000008,
+ "p99Ms": 55.4203849999999,
+ "relativeMarginOfError": 3.303727775462616,
+ "sampleCount": 22,
+ "samplesMs": [
+ 43.92261099999996,
+ 43.950278000000026,
+ 43.9942430000001,
+ 44.002891999999974,
+ 44.02418999999986,
+ 44.03584100000012,
+ 44.11012699999992,
+ 44.117782000000034,
+ 44.35426099999995,
+ 45.94490900000005,
+ 46.181152,
+ 46.24304099999995,
+ 46.2924680000001,
+ 46.33510000000001,
+ 46.39194799999996,
+ 47.01156900000001,
+ 48.01090900000008,
+ 50.91667700000005,
+ 50.96080099999995,
+ 51.74662699999999,
+ 54.02924299999995,
+ 55.4203849999999
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "wasm",
+ "packageName": "@taffyjs/wasm",
+ "hz": 2.7323206072524187,
+ "meanMs": 365.98926105,
+ "medianMs": 363.4894420000005,
+ "minMs": 353.81688399999985,
+ "maxMs": 409.2822449999994,
+ "p75Ms": 370.8229819999997,
+ "p99Ms": 409.2822449999994,
+ "maxRelativeMarginOfError": 1.5567707831860162,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
+ {
+ "hz": 2.7323206072524187,
+ "meanMs": 365.98926105,
+ "medianMs": 363.4894420000005,
+ "minMs": 353.81688399999985,
+ "maxMs": 409.2822449999994,
+ "p75Ms": 370.8229819999997,
+ "p99Ms": 409.2822449999994,
+ "relativeMarginOfError": 1.5567707831860162,
+ "sampleCount": 20,
+ "samplesMs": [
+ 353.81688399999985,
+ 354.62739599999986,
+ 355.1160889999992,
+ 356.4655810000004,
+ 356.7126980000003,
+ 358.4835149999999,
+ 361.2831929999993,
+ 361.5011110000014,
+ 361.8957640000008,
+ 362.89219700000103,
+ 364.086687,
+ 366.54941699999927,
+ 366.9137779999983,
+ 367.204428,
+ 370.8229819999997,
+ 371.0665310000004,
+ 371.0765599999995,
+ 374.27636900000107,
+ 375.7117959999996,
+ 409.2822449999994
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga",
+ "packageName": "@taffyjs/yoga",
+ "hz": 12.17650663409719,
+ "meanMs": 82.12536075,
+ "medianMs": 81.65546300000005,
+ "minMs": 79.27227600000015,
+ "maxMs": 87.85454800000002,
+ "p75Ms": 82.73279299999967,
+ "p99Ms": 87.85454800000002,
+ "maxRelativeMarginOfError": 1.4955249234944046,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
+ {
+ "hz": 12.17650663409719,
+ "meanMs": 82.12536075,
+ "medianMs": 81.65546300000005,
+ "minMs": 79.27227600000015,
+ "maxMs": 87.85454800000002,
+ "p75Ms": 82.73279299999967,
+ "p99Ms": 87.85454800000002,
+ "relativeMarginOfError": 1.4955249234944046,
+ "sampleCount": 20,
+ "samplesMs": [
+ 79.27227600000015,
+ 79.4569039999999,
+ 79.6842529999999,
+ 79.71052899999995,
+ 79.88531499999999,
+ 80.03939300000002,
+ 80.10750400000006,
+ 80.16722600000003,
+ 80.67471700000033,
+ 81.25632399999995,
+ 82.05460200000016,
+ 82.12907800000016,
+ 82.670658,
+ 82.72063200000002,
+ 82.73279299999967,
+ 84.27700899999991,
+ 85.00184799999988,
+ 86.03788999999983,
+ 86.77371600000015,
+ 87.85454800000002
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga-wasm",
+ "packageName": "@taffyjs/yoga-wasm",
+ "hz": 1.6120006086856256,
+ "meanMs": 620.3471603000004,
+ "medianMs": 617.933594000001,
+ "minMs": 598.4849350000004,
+ "maxMs": 656.5173070000019,
+ "p75Ms": 620.5276009999998,
+ "p99Ms": 656.5173070000019,
+ "maxRelativeMarginOfError": 1.0901257655646064,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
+ {
+ "hz": 1.6120006086856256,
+ "meanMs": 620.3471603000004,
+ "medianMs": 617.933594000001,
+ "minMs": 598.4849350000004,
+ "maxMs": 656.5173070000019,
+ "p75Ms": 620.5276009999998,
+ "p99Ms": 656.5173070000019,
+ "relativeMarginOfError": 1.0901257655646064,
+ "sampleCount": 20,
+ "samplesMs": [
+ 598.4849350000004,
+ 602.2592499999992,
+ 607.486277,
+ 611.1988799999999,
+ 611.7025730000005,
+ 613.2648000000008,
+ 615.2492600000005,
+ 615.884277000001,
+ 616.5436440000012,
+ 617.7493379999996,
+ 618.1178500000024,
+ 618.754574999999,
+ 619.0239030000012,
+ 619.4213490000002,
+ 620.5276009999998,
+ 624.9226220000019,
+ 629.1645629999985,
+ 640.0949899999996,
+ 650.5752119999997,
+ 656.5173070000019
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "yoga-layout",
+ "packageName": "yoga-layout",
+ "hz": 901.6640787358201,
+ "meanMs": 1.1090604844789336,
+ "medianMs": 1.0426510000000917,
+ "minMs": 0.9975689999999986,
+ "maxMs": 2.3591450000000123,
+ "p75Ms": 1.105147000000045,
+ "p99Ms": 2.1557370000000446,
+ "maxRelativeMarginOfError": 1.2419460332995518,
+ "roundCount": 1,
+ "sampleCount": 902,
+ "rounds": [
+ {
+ "hz": 901.6640787358201,
+ "meanMs": 1.1090604844789336,
+ "medianMs": 1.0426510000000917,
+ "minMs": 0.9975689999999986,
+ "maxMs": 2.3591450000000123,
+ "p75Ms": 1.105147000000045,
+ "p99Ms": 2.1557370000000446,
+ "relativeMarginOfError": 1.2419460332995518,
+ "sampleCount": 902,
+ "samplesMs": [
+ 0.9975689999999986,
+ 0.9975819999999658,
+ 0.9986380000000281,
+ 0.9992279999999027,
+ 0.9992749999998978,
+ 0.9994529999999031,
+ 0.9995140000000902,
+ 0.9997759999999971,
+ 0.999798999999939,
+ 0.9999740000000656,
+ 1.000088999999889,
+ 1.0005770000000211,
+ 1.0006020000000717,
+ 1.0006359999999859,
+ 1.0007039999999279,
+ 1.000848000000019,
+ 1.0010970000000725,
+ 1.0014689999998154,
+ 1.0014929999999822,
+ 1.001784999999927,
+ 1.001818999999955,
+ 1.0019709999999122,
+ 1.0020059999999376,
+ 1.0020719999999983,
+ 1.0021610000001147,
+ 1.0022210000001905,
+ 1.002236000000039,
+ 1.0023000000001048,
+ 1.0023290000001452,
+ 1.0023570000000745,
+ 1.0024909999999636,
+ 1.002538999999956,
+ 1.0025439999999435,
+ 1.0026569999999992,
+ 1.0027199999999539,
+ 1.0027709999999388,
+ 1.0028409999999894,
+ 1.0028879999999845,
+ 1.0030340000000706,
+ 1.0031020000000126,
+ 1.0031599999999798,
+ 1.0031910000000153,
+ 1.003364999999917,
+ 1.0034469999998237,
+ 1.0034780000000865,
+ 1.0035229999999729,
+ 1.00353999999993,
+ 1.003563999999983,
+ 1.0035699999999679,
+ 1.003657999999973,
+ 1.0037939999999708,
+ 1.0039170000000013,
+ 1.0039429999999356,
+ 1.0040520000000015,
+ 1.0041360000000168,
+ 1.0041660000000547,
+ 1.0042590000000473,
+ 1.0042989999999463,
+ 1.0043869999999515,
+ 1.004577999999924,
+ 1.0045920000000024,
+ 1.004707000000053,
+ 1.0047989999999345,
+ 1.0050599999999577,
+ 1.005137999999988,
+ 1.005249000000049,
+ 1.0053480000000263,
+ 1.0055429999999888,
+ 1.0055660000000444,
+ 1.0056359999999813,
+ 1.0056939999999486,
+ 1.0057879999999386,
+ 1.0058410000000322,
+ 1.0059530000000905,
+ 1.005967999999939,
+ 1.0061820000000807,
+ 1.0062399999999343,
+ 1.0062659999999823,
+ 1.0063199999999597,
+ 1.0063760000000457,
+ 1.006483000000003,
+ 1.0065809999999829,
+ 1.0067710000000716,
+ 1.0069770000000062,
+ 1.0070510000000468,
+ 1.0070560000000341,
+ 1.0072419999999056,
+ 1.0072759999998198,
+ 1.007300999999984,
+ 1.007443000000194,
+ 1.007464999999911,
+ 1.0076040000000148,
+ 1.0076879999999164,
+ 1.0077429999998913,
+ 1.0078709999997955,
+ 1.0078920000000835,
+ 1.007912000000033,
+ 1.0079489999999396,
+ 1.0079670000000078,
+ 1.0079959999999346,
+ 1.0080090000000155,
+ 1.0080209999999852,
+ 1.0081190000000788,
+ 1.0081590000000915,
+ 1.0081849999999122,
+ 1.008197999999993,
+ 1.0082200000000512,
+ 1.0082609999999477,
+ 1.0082689999999275,
+ 1.0085300000000643,
+ 1.008564999999976,
+ 1.0085659999999734,
+ 1.008593000000019,
+ 1.0087200000000394,
+ 1.0087699999999131,
+ 1.008792000000085,
+ 1.0088130000001456,
+ 1.0088739999999916,
+ 1.008876999999984,
+ 1.0088910000000624,
+ 1.0088929999999436,
+ 1.0089120000000094,
+ 1.008954000000017,
+ 1.0089679999999817,
+ 1.0090549999999894,
+ 1.0091009999998732,
+ 1.0091210000000501,
+ 1.0091630000000578,
+ 1.0092400000000907,
+ 1.0092879999999695,
+ 1.0093919999999343,
+ 1.009441000000038,
+ 1.0096040000000812,
+ 1.0097220000000107,
+ 1.0097299999999905,
+ 1.0097509999999374,
+ 1.009871999999973,
+ 1.0100300000001425,
+ 1.0100980000000845,
+ 1.0101209999999128,
+ 1.010138999999981,
+ 1.0101420000000871,
+ 1.0101719999998977,
+ 1.0101819999999861,
+ 1.0102359999999635,
+ 1.0102689999999939,
+ 1.0103860000000395,
+ 1.0104239999999436,
+ 1.0105419999999867,
+ 1.0105669999999236,
+ 1.010575000000017,
+ 1.0105960000000778,
+ 1.0107880000000478,
+ 1.0109509999999773,
+ 1.0109959999999774,
+ 1.0110519999999497,
+ 1.0110859999999775,
+ 1.0111860000001798,
+ 1.011212999999998,
+ 1.0112320000000636,
+ 1.011257999999998,
+ 1.0112669999999753,
+ 1.0113409999999021,
+ 1.0113790000000336,
+ 1.011393000000112,
+ 1.0114529999999604,
+ 1.0115039999999453,
+ 1.0115220000000136,
+ 1.0116230000000996,
+ 1.0116610000000037,
+ 1.0117510000000038,
+ 1.0118099999999686,
+ 1.0118239999999332,
+ 1.0118959999999788,
+ 1.0118969999999763,
+ 1.011944000000085,
+ 1.0120179999998982,
+ 1.012053999999921,
+ 1.012220999999954,
+ 1.0122660000000678,
+ 1.0125130000000127,
+ 1.012519999999995,
+ 1.012548000000038,
+ 1.0125490000000354,
+ 1.0125929999999244,
+ 1.012719000000061,
+ 1.0127200000000585,
+ 1.0127709999999297,
+ 1.0128899999999703,
+ 1.0128959999999552,
+ 1.0129100000000335,
+ 1.0129629999998997,
+ 1.0129630000000134,
+ 1.013112000000092,
+ 1.0133130000000392,
+ 1.013323000000014,
+ 1.0134630000000016,
+ 1.0135119999999915,
+ 1.013516999999979,
+ 1.0135239999999612,
+ 1.013612999999964,
+ 1.0137550000000601,
+ 1.0137589999999363,
+ 1.0138220000000047,
+ 1.013840000000073,
+ 1.0139549999998962,
+ 1.0139940000000252,
+ 1.0139980000001287,
+ 1.0140609999999697,
+ 1.0140710000000581,
+ 1.014128000000028,
+ 1.0141770000000179,
+ 1.014201000000071,
+ 1.0142120000000432,
+ 1.0142329999999902,
+ 1.014267000000018,
+ 1.0142680000000155,
+ 1.0144050000000107,
+ 1.014509999999973,
+ 1.0145379999999022,
+ 1.0146219999999175,
+ 1.0148390000000518,
+ 1.0148440000000392,
+ 1.0148930000000291,
+ 1.0149850000000242,
+ 1.014996999999994,
+ 1.0150059999999712,
+ 1.0150119999998424,
+ 1.015090999999984,
+ 1.0150949999999739,
+ 1.0152550000000247,
+ 1.0153099999999995,
+ 1.015365999999858,
+ 1.0156370000000834,
+ 1.0158389999999144,
+ 1.0159330000000182,
+ 1.0159400000000005,
+ 1.0159420000001091,
+ 1.0160520000000588,
+ 1.0160649999999123,
+ 1.0164169999998194,
+ 1.0164250000000266,
+ 1.0164800000000014,
+ 1.0164909999999736,
+ 1.0164980000000696,
+ 1.0165850000000773,
+ 1.0166090000000167,
+ 1.016640999999936,
+ 1.0166539999999031,
+ 1.0166979999999057,
+ 1.0167020000000093,
+ 1.016764999999964,
+ 1.016781999999921,
+ 1.0168559999999616,
+ 1.0168859999999995,
+ 1.0169000000000779,
+ 1.0169429999999693,
+ 1.016978999999992,
+ 1.017074999999977,
+ 1.017251999999985,
+ 1.017313999999942,
+ 1.0173310000000129,
+ 1.0173449999999775,
+ 1.0177329999999074,
+ 1.017797999999857,
+ 1.0177999999999656,
+ 1.017800999999963,
+ 1.0178150000000414,
+ 1.0178550000000541,
+ 1.017973999999981,
+ 1.0179770000002009,
+ 1.0180569999999989,
+ 1.0181150000000798,
+ 1.0181310000000394,
+ 1.0182399999999916,
+ 1.0183090000000448,
+ 1.0183110000000397,
+ 1.0183170000000246,
+ 1.018336999999974,
+ 1.018338999999969,
+ 1.018342999999959,
+ 1.0183680000000095,
+ 1.0185659999999643,
+ 1.0186489999999822,
+ 1.0186619999999493,
+ 1.01868300000001,
+ 1.018835000000081,
+ 1.0188499999999294,
+ 1.0189439999999195,
+ 1.0189619999999877,
+ 1.0189859999999271,
+ 1.019015999999965,
+ 1.0190670000000637,
+ 1.0190939999999955,
+ 1.0195020000001023,
+ 1.0195660000000544,
+ 1.0196069999999509,
+ 1.0196660000000293,
+ 1.0196699999999055,
+ 1.019743999999946,
+ 1.019818999999984,
+ 1.0198229999998603,
+ 1.0198320000001786,
+ 1.0199199999999564,
+ 1.0200340000000097,
+ 1.0201100000000451,
+ 1.0201359999998658,
+ 1.020136999999977,
+ 1.020212999999785,
+ 1.0202150000000074,
+ 1.0203800000000456,
+ 1.0204459999999926,
+ 1.020526000000018,
+ 1.0206050000001596,
+ 1.0206359999999677,
+ 1.020727000000079,
+ 1.0207350000000588,
+ 1.0208130000000892,
+ 1.0208320000000413,
+ 1.0208800000000338,
+ 1.0208939999999984,
+ 1.0210810000000947,
+ 1.0211269999999786,
+ 1.0211430000001656,
+ 1.021156000000019,
+ 1.0212779999999384,
+ 1.0212930000000142,
+ 1.0214399999999841,
+ 1.0214690000000246,
+ 1.021470000000022,
+ 1.021592999999939,
+ 1.0217750000000478,
+ 1.0218509999999696,
+ 1.021867000000043,
+ 1.0219070000000556,
+ 1.021961000000033,
+ 1.0225570000000062,
+ 1.0227879999999914,
+ 1.0228170000000318,
+ 1.02283999999986,
+ 1.022852999999941,
+ 1.0229810000000725,
+ 1.0231840000000147,
+ 1.0233630000000176,
+ 1.023520000000076,
+ 1.0237480000000687,
+ 1.02374999999995,
+ 1.023951000000011,
+ 1.0240249999999378,
+ 1.0241170000001603,
+ 1.0243020000000342,
+ 1.0243600000000015,
+ 1.024498999999878,
+ 1.024581000000012,
+ 1.0246539999999413,
+ 1.0246640000000298,
+ 1.0246759999999995,
+ 1.0247190000000046,
+ 1.0248320000000604,
+ 1.0249900000001162,
+ 1.025188000000071,
+ 1.0252700000000914,
+ 1.0254159999999501,
+ 1.0254429999999957,
+ 1.02570999999989,
+ 1.025714999999991,
+ 1.025716999999986,
+ 1.025944000000095,
+ 1.0259999999999536,
+ 1.0260039999999435,
+ 1.0260279999999966,
+ 1.026672000000076,
+ 1.026779999999917,
+ 1.0275189999999839,
+ 1.0276709999998275,
+ 1.028628000000026,
+ 1.0287470000000667,
+ 1.0289480000001276,
+ 1.0295059999998557,
+ 1.0295139999998355,
+ 1.0295830000000024,
+ 1.0296960000000581,
+ 1.029745000000048,
+ 1.0299749999999221,
+ 1.0302800000000616,
+ 1.0303429999999025,
+ 1.0305439999999635,
+ 1.031041999999843,
+ 1.0310429999999542,
+ 1.0313119999998435,
+ 1.0314789999999903,
+ 1.0315030000000434,
+ 1.031739000000016,
+ 1.031889000000092,
+ 1.031932999999981,
+ 1.0328649999999016,
+ 1.0330179999998563,
+ 1.0333969999999226,
+ 1.0334300000000667,
+ 1.0335659999999507,
+ 1.0338500000000295,
+ 1.0343209999999772,
+ 1.0344729999999345,
+ 1.0345389999999952,
+ 1.0345630000000483,
+ 1.0345989999999574,
+ 1.0347410000000536,
+ 1.0349459999999908,
+ 1.0356489999999212,
+ 1.0359459999999672,
+ 1.0359859999998662,
+ 1.0359990000000607,
+ 1.0360790000000861,
+ 1.036081000000081,
+ 1.0360970000000407,
+ 1.0361649999999827,
+ 1.0364379999999755,
+ 1.0364870000000792,
+ 1.0367979999999761,
+ 1.0369000000000597,
+ 1.0375119999999924,
+ 1.0375659999999698,
+ 1.038189999999986,
+ 1.038481000000047,
+ 1.0385009999999966,
+ 1.0385669999999436,
+ 1.0386799999998857,
+ 1.0387150000000247,
+ 1.0387539999999262,
+ 1.0388299999999617,
+ 1.0389069999999947,
+ 1.0393440000000282,
+ 1.0395369999999957,
+ 1.0399080000000822,
+ 1.0399460000001,
+ 1.0399919999999838,
+ 1.0400470000000723,
+ 1.0401500000000397,
+ 1.040234000000055,
+ 1.0403409999998985,
+ 1.0405359999999746,
+ 1.0409499999998388,
+ 1.0410930000000462,
+ 1.041150000000016,
+ 1.041339999999991,
+ 1.0413770000000113,
+ 1.0416369999999233,
+ 1.0418300000001182,
+ 1.0420970000000125,
+ 1.0422170000000506,
+ 1.04252600000018,
+ 1.0427760000000035,
+ 1.043021000000067,
+ 1.0434169999999767,
+ 1.0434879999999112,
+ 1.0435109999999668,
+ 1.0435449999999946,
+ 1.0435860000000048,
+ 1.0437389999999596,
+ 1.043818999999985,
+ 1.0438279999999622,
+ 1.043833999999947,
+ 1.0440780000000132,
+ 1.044163000000026,
+ 1.044238999999834,
+ 1.0443259999999555,
+ 1.0445379999999886,
+ 1.0446589999999674,
+ 1.0446729999999889,
+ 1.0447110000000066,
+ 1.0447410000000446,
+ 1.0448350000000346,
+ 1.044883000000027,
+ 1.0451699999999846,
+ 1.04562999999996,
+ 1.0458189999999945,
+ 1.045992999999953,
+ 1.046102000000019,
+ 1.0462550000000874,
+ 1.0464210000000094,
+ 1.0468570000000454,
+ 1.046944999999937,
+ 1.0469470000000456,
+ 1.0469659999999976,
+ 1.047057999999879,
+ 1.0470900000000256,
+ 1.0473489999999401,
+ 1.0474000000000387,
+ 1.04740599999991,
+ 1.0474240000000918,
+ 1.0474659999999858,
+ 1.0475020000000086,
+ 1.0476039999998648,
+ 1.0479119999999966,
+ 1.0479599999998754,
+ 1.0481169999999906,
+ 1.0481399999999894,
+ 1.0482569999999214,
+ 1.0483169999999973,
+ 1.0486660000001393,
+ 1.0488989999998921,
+ 1.0489480000001095,
+ 1.0489720000000489,
+ 1.0495279999998957,
+ 1.0495369999999866,
+ 1.0499810000000025,
+ 1.0506730000000744,
+ 1.0506820000000516,
+ 1.0506900000000314,
+ 1.050752999999986,
+ 1.0508640000000469,
+ 1.0509809999998652,
+ 1.0511340000000473,
+ 1.0513819999999896,
+ 1.0519620000000032,
+ 1.052075000000059,
+ 1.0520850000000337,
+ 1.0520890000000236,
+ 1.052101999999877,
+ 1.0522889999999734,
+ 1.0523769999999786,
+ 1.0523849999999584,
+ 1.0524000000000342,
+ 1.0524930000001405,
+ 1.052601999999979,
+ 1.0528430000000526,
+ 1.0528800000000729,
+ 1.0532000000000608,
+ 1.0534959999999955,
+ 1.053672000000006,
+ 1.0541130000000294,
+ 1.054332999999815,
+ 1.0551110000001245,
+ 1.0554140000001553,
+ 1.0556659999999738,
+ 1.0557370000001356,
+ 1.0557450000000017,
+ 1.0557739999999285,
+ 1.0558720000000221,
+ 1.055953000000045,
+ 1.0560249999998632,
+ 1.0562400000000025,
+ 1.0562519999999722,
+ 1.0564339999999675,
+ 1.056745000000035,
+ 1.056779000000006,
+ 1.0570310000000518,
+ 1.057327999999984,
+ 1.0574770000000626,
+ 1.0576119999998355,
+ 1.0579189999998562,
+ 1.0579549999999927,
+ 1.0583070000000134,
+ 1.058320999999978,
+ 1.0587789999999586,
+ 1.0591829999999618,
+ 1.0602699999999459,
+ 1.0607139999999617,
+ 1.0608799999999974,
+ 1.0611450000000104,
+ 1.061193000000003,
+ 1.0613899999999603,
+ 1.0617190000000392,
+ 1.0625259999999344,
+ 1.06273699999997,
+ 1.0642740000000117,
+ 1.064358000000027,
+ 1.0646769999999606,
+ 1.064677999999958,
+ 1.0647440000000188,
+ 1.0649809999999889,
+ 1.0653480000000286,
+ 1.0654230000000098,
+ 1.0655839999999444,
+ 1.0656860000001416,
+ 1.0662099999999555,
+ 1.066483000000062,
+ 1.0665380000000368,
+ 1.0666689999999903,
+ 1.0670959999999923,
+ 1.067528999999979,
+ 1.0677279999999882,
+ 1.068241999999998,
+ 1.068266999999878,
+ 1.0684290000000374,
+ 1.0690789999998742,
+ 1.0690970000000561,
+ 1.0695670000000064,
+ 1.0697430000000168,
+ 1.0699579999999287,
+ 1.0704290000001038,
+ 1.0704599999999118,
+ 1.070573000000195,
+ 1.070609000000104,
+ 1.0706230000000119,
+ 1.070899000000054,
+ 1.0709739999999783,
+ 1.0710700000000202,
+ 1.0712000000000899,
+ 1.071234000000004,
+ 1.0720360000000255,
+ 1.0721200000000408,
+ 1.072642999999971,
+ 1.0731120000000374,
+ 1.0732550000000174,
+ 1.07353999999998,
+ 1.0736149999999611,
+ 1.073853999999983,
+ 1.0748290000000225,
+ 1.0750189999999975,
+ 1.0751339999999345,
+ 1.0752929999999878,
+ 1.076174999999921,
+ 1.0764120000000048,
+ 1.0766769999999042,
+ 1.0768549999999664,
+ 1.0770540000000324,
+ 1.0773189999999886,
+ 1.0773360000000594,
+ 1.077367000000038,
+ 1.0779179999999542,
+ 1.0787970000000087,
+ 1.0790160000000242,
+ 1.0794159999999806,
+ 1.0800009999999247,
+ 1.0801010000000133,
+ 1.0801879999999642,
+ 1.0803569999999922,
+ 1.0804299999999785,
+ 1.08046400000012,
+ 1.0807019999999739,
+ 1.0811280000000352,
+ 1.0812989999999445,
+ 1.081514000000027,
+ 1.081721000000016,
+ 1.081939000000034,
+ 1.0820759999999154,
+ 1.0826359999998658,
+ 1.0831570000000283,
+ 1.0836659999999938,
+ 1.0840630000000147,
+ 1.0849749999999858,
+ 1.0851470000000063,
+ 1.0857849999999871,
+ 1.0864230000000248,
+ 1.0865329999999176,
+ 1.0866009999999733,
+ 1.0875230000000329,
+ 1.0883220000000051,
+ 1.0888769999999681,
+ 1.0891289999999572,
+ 1.090016999999989,
+ 1.0901910000000044,
+ 1.090377999999987,
+ 1.0903969999999958,
+ 1.0905310000000554,
+ 1.0918879999999263,
+ 1.0920729999998002,
+ 1.093101000000047,
+ 1.093311999999969,
+ 1.0937020000000075,
+ 1.0951540000000932,
+ 1.0955340000000433,
+ 1.0956649999999968,
+ 1.0961550000000102,
+ 1.096275999999989,
+ 1.0989470000000097,
+ 1.0994960000000447,
+ 1.1014909999998963,
+ 1.1015340000000151,
+ 1.1018530000000055,
+ 1.1028440000000046,
+ 1.103478999999993,
+ 1.1045870000000377,
+ 1.1046079999999847,
+ 1.1047120000000064,
+ 1.105147000000045,
+ 1.105297999999948,
+ 1.105636000000004,
+ 1.1062269999999899,
+ 1.1067920000000413,
+ 1.1073630000000207,
+ 1.1074680000000399,
+ 1.1081440000000384,
+ 1.108528000000092,
+ 1.1106419999999844,
+ 1.11109399999998,
+ 1.1110949999999775,
+ 1.1114999999999782,
+ 1.1118860000000268,
+ 1.112043999999969,
+ 1.1126429999999345,
+ 1.1129469999998491,
+ 1.1137820000000147,
+ 1.1139900000000011,
+ 1.1141669999999522,
+ 1.1147809999999936,
+ 1.1150089999999864,
+ 1.1156109999999444,
+ 1.116467000000057,
+ 1.1172820000000456,
+ 1.1177079999999933,
+ 1.1177779999998165,
+ 1.1183450000000335,
+ 1.1199849999999856,
+ 1.1207079999999223,
+ 1.1209199999999555,
+ 1.1214540000000284,
+ 1.1214909999998781,
+ 1.122694000000024,
+ 1.1230809999999565,
+ 1.1237550000000738,
+ 1.1241400000000112,
+ 1.1252359999999726,
+ 1.1277549999999792,
+ 1.1284070000000384,
+ 1.128436000000022,
+ 1.1294790000000035,
+ 1.129788000000019,
+ 1.1308760000000575,
+ 1.133199999999988,
+ 1.1340190000000803,
+ 1.1349990000000503,
+ 1.136015000000043,
+ 1.136841000000004,
+ 1.1370980000000372,
+ 1.1374040000000605,
+ 1.1375070000001415,
+ 1.13797500000004,
+ 1.1381260000000566,
+ 1.1383549999999332,
+ 1.1384080000000267,
+ 1.1386870000000044,
+ 1.1395440000000008,
+ 1.140288000000055,
+ 1.141522000000009,
+ 1.1423029999999699,
+ 1.1431789999999182,
+ 1.1432789999998931,
+ 1.14382599999999,
+ 1.146400999999969,
+ 1.1467739999999367,
+ 1.14703099999997,
+ 1.1472739999999817,
+ 1.1475640000001022,
+ 1.148303000000169,
+ 1.1485450000000128,
+ 1.1487999999999374,
+ 1.149121999999977,
+ 1.1493330000000697,
+ 1.1506880000000592,
+ 1.1518919999999753,
+ 1.1521110000001045,
+ 1.154186999999979,
+ 1.154918000000066,
+ 1.155634000000191,
+ 1.1588409999999953,
+ 1.159626000000003,
+ 1.1603549999999814,
+ 1.1619830000000206,
+ 1.1620769999999538,
+ 1.1626509999998689,
+ 1.1646329999999807,
+ 1.1657999999999902,
+ 1.1668129999999906,
+ 1.1672820000000002,
+ 1.1673600000000306,
+ 1.1675319999999942,
+ 1.1688380000000507,
+ 1.168990000000008,
+ 1.1710570000000189,
+ 1.1722699999999122,
+ 1.1726650000000518,
+ 1.1726959999999735,
+ 1.1731490000000235,
+ 1.1732110000000375,
+ 1.1740109999999504,
+ 1.1740409999999883,
+ 1.174158000000034,
+ 1.174400999999989,
+ 1.174536999999873,
+ 1.1748170000000755,
+ 1.1781440000000316,
+ 1.178504000000089,
+ 1.18267000000003,
+ 1.1832210000000032,
+ 1.1839439999999968,
+ 1.1845519999999965,
+ 1.1871259999998074,
+ 1.1890850000002047,
+ 1.1904550000000427,
+ 1.1915880000000243,
+ 1.1916760000000295,
+ 1.1924640000000863,
+ 1.1938850000001366,
+ 1.1944579999999405,
+ 1.1958039999999528,
+ 1.1964510000000246,
+ 1.19681700000001,
+ 1.1971799999998893,
+ 1.197968000000003,
+ 1.2006910000000062,
+ 1.2046510000000126,
+ 1.2048980000000142,
+ 1.2050739999999678,
+ 1.206358000000023,
+ 1.207557999999949,
+ 1.208721000000196,
+ 1.215814000000023,
+ 1.217367999999965,
+ 1.2189330000000496,
+ 1.2199170000000095,
+ 1.2246730000000525,
+ 1.232844,
+ 1.2340110000000095,
+ 1.234833999999978,
+ 1.2350659999999607,
+ 1.2429630000001453,
+ 1.2445650000001933,
+ 1.2499070000000074,
+ 1.2515399999999772,
+ 1.2548130000000128,
+ 1.2581639999999652,
+ 1.2613799999999742,
+ 1.2627979999999752,
+ 1.2628699999997934,
+ 1.2638600000000224,
+ 1.265649000000053,
+ 1.2687379999999848,
+ 1.274220000000014,
+ 1.27823699999999,
+ 1.2787559999999871,
+ 1.2814700000001267,
+ 1.282130000000052,
+ 1.2826109999999744,
+ 1.2862789999999222,
+ 1.286754999999971,
+ 1.2878520000000435,
+ 1.300760000000082,
+ 1.3037859999999455,
+ 1.3087239999999838,
+ 1.3118920000000571,
+ 1.312045000000012,
+ 1.3121439999999893,
+ 1.312648000000081,
+ 1.3138609999998607,
+ 1.3256759999999304,
+ 1.3262300000000096,
+ 1.3563760000000116,
+ 1.3644510000001446,
+ 1.3693499999999403,
+ 1.3862120000000004,
+ 1.4023370000001023,
+ 1.4046319999999923,
+ 1.4146569999998064,
+ 1.4465379999999186,
+ 1.4530819999999949,
+ 1.454394000000093,
+ 1.5076119999999946,
+ 1.534396999999899,
+ 1.5412880000000087,
+ 1.5669260000000804,
+ 1.569099000000051,
+ 1.5954319999999598,
+ 1.6619810000001962,
+ 1.671748999999977,
+ 1.67483900000002,
+ 1.6795770000001085,
+ 1.687836999999945,
+ 1.701806999999917,
+ 1.7283119999999599,
+ 1.734952999999905,
+ 1.74135699999988,
+ 1.7452999999999292,
+ 1.7693910000000415,
+ 1.9155120000000352,
+ 1.947046999999884,
+ 2.004554999999982,
+ 2.0242339999999786,
+ 2.0717879999999695,
+ 2.076633999999899,
+ 2.0841629999999896,
+ 2.0938500000000886,
+ 2.1023479999998926,
+ 2.106920000000059,
+ 2.1097090000000662,
+ 2.1151490000002013,
+ 2.11592799999994,
+ 2.1205629999999474,
+ 2.12986699999999,
+ 2.140094999999974,
+ 2.14716999999996,
+ 2.1557370000000446,
+ 2.162935999999945,
+ 2.168049999999994,
+ 2.178617999999915,
+ 2.1811780000000454,
+ 2.197169000000031,
+ 2.2094680000000153,
+ 2.2705760000000055,
+ 2.281334999999899,
+ 2.3591450000000123
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "coding-agent-chat-viewport-resize",
+ "name": "Coding-agent chat: viewport resize",
+ "question": "What does it cost to relayout an existing measured application tree after a resize?",
+ "description": "The same coding-agent fixture is created and initially laid out before timing. Each transaction alternates between two fixed viewport sizes, recomputes measured layout, and reads every result.",
+ "transaction": "Update the persistent root size through the public API, calculate layout with public text-measure callbacks, then read left/top/width/height for every node. Setup and final release are outside timing.",
+ "parameters": {
+ "nodeCount": 285,
+ "measuredNodeCount": 51,
+ "sessionCount": 18,
+ "messageCount": 32,
+ "initialViewportWidth": 1280,
+ "initialViewportHeight": 800,
+ "resizedViewportWidth": 1024,
+ "resizedViewportHeight": 768
+ },
+ "results": [
+ {
+ "targetId": "node",
+ "packageName": "@taffyjs/node",
+ "hz": 50.774914398273125,
+ "meanMs": 19.694764862745103,
+ "medianMs": 19.080766999999923,
+ "minMs": 18.566963999999984,
+ "maxMs": 23.968570999999883,
+ "p75Ms": 20.677331000000095,
+ "p99Ms": 23.968570999999883,
+ "maxRelativeMarginOfError": 1.86607206949961,
+ "roundCount": 1,
+ "sampleCount": 51,
+ "rounds": [
+ {
+ "hz": 50.774914398273125,
+ "meanMs": 19.694764862745103,
+ "medianMs": 19.080766999999923,
+ "minMs": 18.566963999999984,
+ "maxMs": 23.968570999999883,
+ "p75Ms": 20.677331000000095,
+ "p99Ms": 23.968570999999883,
+ "relativeMarginOfError": 1.86607206949961,
+ "sampleCount": 51,
+ "samplesMs": [
+ 18.566963999999984,
+ 18.584317000000055,
+ 18.60044700000003,
+ 18.611027999999806,
+ 18.62333000000001,
+ 18.626801999999998,
+ 18.626874000000043,
+ 18.636119000000008,
+ 18.643477000000075,
+ 18.68679499999996,
+ 18.70557699999995,
+ 18.75275600000009,
+ 18.772000999999932,
+ 18.777413000000024,
+ 18.872936999999865,
+ 18.89246000000003,
+ 18.92405800000006,
+ 18.933426000000054,
+ 18.964868000000024,
+ 18.97379100000012,
+ 18.99196699999993,
+ 19.00568300000009,
+ 19.028134000000023,
+ 19.034312,
+ 19.068372000000068,
+ 19.080766999999923,
+ 19.107972000000018,
+ 19.112895999999978,
+ 19.177333999999973,
+ 19.32287599999995,
+ 19.332182999999986,
+ 19.35761100000002,
+ 19.437303000000156,
+ 19.455375000000004,
+ 19.55219299999999,
+ 19.739914999999996,
+ 19.777537999999936,
+ 19.88338800000008,
+ 20.677331000000095,
+ 20.713571,
+ 20.864581999999928,
+ 20.869417999999996,
+ 21.265686000000073,
+ 21.63537599999995,
+ 21.671123999999963,
+ 21.855530000000044,
+ 21.89210899999989,
+ 22.059338000000025,
+ 22.13990100000001,
+ 22.579212000000098,
+ 23.968570999999883
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "wasm",
+ "packageName": "@taffyjs/wasm",
+ "hz": 6.329975610008963,
+ "meanMs": 157.97849179999986,
+ "medianMs": 158.68057249999993,
+ "minMs": 152.3980419999998,
+ "maxMs": 163.62046199999986,
+ "p75Ms": 160.10669700000017,
+ "p99Ms": 163.62046199999986,
+ "maxRelativeMarginOfError": 0.9655434147503308,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
+ {
+ "hz": 6.329975610008963,
+ "meanMs": 157.97849179999986,
+ "medianMs": 158.68057249999993,
+ "minMs": 152.3980419999998,
+ "maxMs": 163.62046199999986,
+ "p75Ms": 160.10669700000017,
+ "p99Ms": 163.62046199999986,
+ "relativeMarginOfError": 0.9655434147503308,
+ "sampleCount": 20,
+ "samplesMs": [
+ 152.3980419999998,
+ 153.2647219999999,
+ 153.32357000000002,
+ 153.46882000000005,
+ 155.1386120000002,
+ 155.31638699999985,
+ 155.77342500000032,
+ 158.16176300000006,
+ 158.4036419999993,
+ 158.45346599999993,
+ 158.90767899999992,
+ 159.45945200000006,
+ 159.46402399999988,
+ 160.00422199999957,
+ 160.10669700000017,
+ 160.41963199999918,
+ 160.59682900000007,
+ 161.10044299999936,
+ 162.18794699999944,
+ 163.62046199999986
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga",
+ "packageName": "@taffyjs/yoga",
+ "hz": 23.474539866667765,
+ "meanMs": 42.59934404166666,
+ "medianMs": 41.570416500000135,
+ "minMs": 37.465394999999944,
+ "maxMs": 62.856641999999965,
+ "p75Ms": 43.781344999999874,
+ "p99Ms": 62.856641999999965,
+ "maxRelativeMarginOfError": 5.595879473266216,
+ "roundCount": 1,
+ "sampleCount": 24,
+ "rounds": [
+ {
+ "hz": 23.474539866667765,
+ "meanMs": 42.59934404166666,
+ "medianMs": 41.570416500000135,
+ "minMs": 37.465394999999944,
+ "maxMs": 62.856641999999965,
+ "p75Ms": 43.781344999999874,
+ "p99Ms": 62.856641999999965,
+ "relativeMarginOfError": 5.595879473266216,
+ "sampleCount": 24,
+ "samplesMs": [
+ 37.465394999999944,
+ 37.46728599999983,
+ 37.69151399999987,
+ 38.18205400000011,
+ 38.26306499999998,
+ 38.51596799999993,
+ 39.02805400000011,
+ 39.33358799999996,
+ 39.505089,
+ 40.03654899999992,
+ 40.69306899999992,
+ 41.457725000000096,
+ 41.683108000000175,
+ 41.784258000000136,
+ 43.0238149999999,
+ 43.07526199999984,
+ 43.10808799999995,
+ 43.781344999999874,
+ 44.143013999999994,
+ 44.373800000000074,
+ 45.8401530000001,
+ 50.041201,
+ 51.03421500000013,
+ 62.856641999999965
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "taffy-yoga-wasm",
+ "packageName": "@taffyjs/yoga-wasm",
+ "hz": 3.4257125586863246,
+ "meanMs": 291.91007209999987,
+ "medianMs": 290.8676250000003,
+ "minMs": 281.3500129999993,
+ "maxMs": 313.8109450000002,
+ "p75Ms": 293.83430299999964,
+ "p99Ms": 313.8109450000002,
+ "maxRelativeMarginOfError": 1.2724225614471978,
+ "roundCount": 1,
+ "sampleCount": 20,
+ "rounds": [
+ {
+ "hz": 3.4257125586863246,
+ "meanMs": 291.91007209999987,
+ "medianMs": 290.8676250000003,
+ "minMs": 281.3500129999993,
+ "maxMs": 313.8109450000002,
+ "p75Ms": 293.83430299999964,
+ "p99Ms": 313.8109450000002,
+ "relativeMarginOfError": 1.2724225614471978,
+ "sampleCount": 20,
+ "samplesMs": [
+ 281.3500129999993,
+ 282.7816899999998,
+ 283.3635439999998,
+ 284.3768660000005,
+ 284.8017349999991,
+ 288.518787,
+ 290.095961,
+ 290.50855500000034,
+ 290.5275840000004,
+ 290.745452000001,
+ 290.9897979999996,
+ 291.58016099999986,
+ 292.4747049999987,
+ 292.82578099999955,
+ 293.83430299999964,
+ 293.91808200000014,
+ 293.97712500000034,
+ 300.52913999999873,
+ 307.19121499999983,
+ 313.8109450000002
+ ]
+ }
+ ]
+ },
+ {
+ "targetId": "yoga-layout",
+ "packageName": "yoga-layout",
+ "hz": 3980.1741616235786,
+ "meanMs": 0.2512452871137889,
+ "medianMs": 0.24910299999987728,
+ "minMs": 0.2451099999999542,
+ "maxMs": 0.6097829999999931,
+ "p75Ms": 0.25040199999989454,
+ "p99Ms": 0.3158589999998185,
+ "maxRelativeMarginOfError": 0.1671098359782093,
+ "roundCount": 1,
+ "sampleCount": 3981,
+ "rounds": [
+ {
+ "hz": 3980.1741616235786,
+ "meanMs": 0.2512452871137889,
+ "medianMs": 0.24910299999987728,
+ "minMs": 0.2451099999999542,
+ "maxMs": 0.6097829999999931,
+ "p75Ms": 0.25040199999989454,
+ "p99Ms": 0.3158589999998185,
+ "relativeMarginOfError": 0.1671098359782093,
+ "sampleCount": 3981,
+ "samplesMs": [
+ 0.2451099999999542,
+ 0.2451340000000073,
+ 0.24524299999995947,
+ 0.24527899999998226,
+ 0.24528399999996964,
+ 0.24530499999991662,
+ 0.24531000000001768,
+ 0.2453249999999798,
+ 0.2453649999999925,
+ 0.24540799999999763,
+ 0.24541800000002922,
+ 0.2454370000000381,
+ 0.24545599999999013,
+ 0.2454770000000508,
+ 0.24548200000003817,
+ 0.24548800000002302,
+ 0.24548800000002302,
+ 0.24549799999999777,
+ 0.24550399999998263,
+ 0.2455280000001494,
+ 0.24553900000000795,
+ 0.24555999999995493,
+ 0.24556200000006356,
+ 0.2455770000000257,
+ 0.24558300000001054,
+ 0.24559999999996762,
+ 0.245604999999955,
+ 0.24562700000001314,
+ 0.2456290000000081,
+ 0.24563399999999547,
+ 0.24564199999997527,
+ 0.24564299999997274,
+ 0.24567400000000816,
+ 0.24567799999999806,
+ 0.24568599999997787,
+ 0.24570500000004358,
+ 0.24571900000000824,
+ 0.24572599999999056,
+ 0.24574200000006385,
+ 0.24574599999994007,
+ 0.24574699999993754,
+ 0.24574899999998934,
+ 0.24575599999991482,
+ 0.24576600000000326,
+ 0.24578000000002476,
+ 0.2457920000000513,
+ 0.2457960000000412,
+ 0.2457960000000412,
+ 0.24579900000003363,
+ 0.24580500000001848,
+ 0.2458199999999806,
+ 0.24582299999997304,
+ 0.2458240000000842,
+ 0.24582500000002483,
+ 0.24582700000001978,
+ 0.2458319999999503,
+ 0.24583800000004885,
+ 0.24583999999993011,
+ 0.24584200000003875,
+ 0.24584600000002865,
+ 0.24584700000002613,
+ 0.24585100000001603,
+ 0.24585300000001098,
+ 0.24585400000000845,
+ 0.24585400000000845,
+ 0.24585799999999836,
+ 0.2458599999999933,
+ 0.2458740000000148,
+ 0.24587600000000975,
+ 0.24589400000002115,
+ 0.24590100000000348,
+ 0.24590699999998833,
+ 0.2459079999999858,
+ 0.2459119999999757,
+ 0.24591499999996813,
+ 0.24592099999995298,
+ 0.24592199999995046,
+ 0.24592199999995046,
+ 0.2459320000000389,
+ 0.24594199999989996,
+ 0.24594600000000355,
+ 0.24595099999999093,
+ 0.2459559999999783,
+ 0.24596099999996568,
+ 0.24596300000007432,
+ 0.24596700000006422,
+ 0.24596999999994296,
+ 0.24597099999999728,
+ 0.24597199999999475,
+ 0.24597300000004907,
+ 0.24597500000004402,
+ 0.2459760000000415,
+ 0.2459920000000011,
+ 0.24599299999999857,
+ 0.2460039999999708,
+ 0.24600499999996828,
+ 0.24600599999996575,
+ 0.2460120000000643,
+ 0.24601699999999482,
+ 0.24603700000000117,
+ 0.2460479999999734,
+ 0.24604899999997087,
+ 0.24604900000008456,
+ 0.24605299999996078,
+ 0.24605700000006436,
+ 0.246063999999933,
+ 0.24606800000015028,
+ 0.24606900000003407,
+ 0.2460760000000164,
+ 0.24607700000001387,
+ 0.2460800000000063,
+ 0.24608200000011493,
+ 0.24608499999999367,
+ 0.24608499999999367,
+ 0.24608599999999115,
+ 0.24608999999998105,
+ 0.2460910000000922,
+ 0.24609699999996337,
+ 0.24610100000006696,
+ 0.24610199999995075,
+ 0.24610200000006444,
+ 0.24611300000003666,
+ 0.24611500000003161,
+ 0.24611700000002656,
+ 0.24611700000002656,
+ 0.24611900000002152,
+ 0.24612500000000637,
+ 0.24612999999999374,
+ 0.24614500000006956,
+ 0.2461600000000317,
+ 0.24616099999991548,
+ 0.24616600000001654,
+ 0.246167000000014,
+ 0.246167000000014,
+ 0.24616900000000896,
+ 0.24617499999999382,
+ 0.2461799999999812,
+ 0.24618100000009235,
+ 0.24618299999997362,
+ 0.2461839999999711,
+ 0.246187999999961,
+ 0.2461910000000671,
+ 0.24619399999994585,
+ 0.24619799999993575,
+ 0.24619800000004943,
+ 0.24620100000015555,
+ 0.2462030000000368,
+ 0.24620500000003176,
+ 0.24620899999990797,
+ 0.24621099999990292,
+ 0.24621300000001156,
+ 0.2462150000000065,
+ 0.24621799999999894,
+ 0.2462199999999939,
+ 0.24622800000008738,
+ 0.24622999999996864,
+ 0.24623200000007728,
+ 0.24623399999995854,
+ 0.24623399999995854,
+ 0.24623499999984233,
+ 0.2462359999999535,
+ 0.24624100000005456,
+ 0.24624699999998256,
+ 0.2462519999999131,
+ 0.24625200000002678,
+ 0.24625600000001668,
+ 0.2462599999998929,
+ 0.246262999999999,
+ 0.24627399999997124,
+ 0.24627699999996366,
+ 0.24627799999996114,
+ 0.24628299999994852,
+ 0.2462830000000622,
+ 0.24628800000004958,
+ 0.24629400000003443,
+ 0.24629600000002938,
+ 0.24629700000002686,
+ 0.24629799999991064,
+ 0.24629800000002433,
+ 0.24629800000002433,
+ 0.24629899999990812,
+ 0.24630099999990307,
+ 0.24630400000000918,
+ 0.24630400000000918,
+ 0.2463070000000016,
+ 0.24630799999999908,
+ 0.24630799999999908,
+ 0.24631199999998898,
+ 0.2463149999999814,
+ 0.2463150000000951,
+ 0.2463150000000951,
+ 0.24631599999997889,
+ 0.24631599999997889,
+ 0.246319000000085,
+ 0.24632199999996374,
+ 0.2463230000000749,
+ 0.24632599999995364,
+ 0.2463269999999511,
+ 0.2463269999999511,
+ 0.24633099999999786,
+ 0.24633200000005218,
+ 0.24633200000005218,
+ 0.2463350000000446,
+ 0.24633600000004208,
+ 0.24633700000003955,
+ 0.24634500000001935,
+ 0.24634600000001683,
+ 0.24634600000001683,
+ 0.24634600000001683,
+ 0.24634900000000926,
+ 0.24635399999999663,
+ 0.24635999999998148,
+ 0.24636099999997896,
+ 0.2463610000000358,
+ 0.24636199999997643,
+ 0.24636199999997643,
+ 0.24636200000009012,
+ 0.2463630000000876,
+ 0.24636399999997138,
+ 0.24636399999997138,
+ 0.24636600000008002,
+ 0.2463709999999537,
+ 0.24637399999994614,
+ 0.24637599999999793,
+ 0.24637799999993604,
+ 0.24637800000004972,
+ 0.2463789999999335,
+ 0.24638100000004215,
+ 0.2463829999999234,
+ 0.2463839999999209,
+ 0.24638499999991836,
+ 0.246387000000027,
+ 0.24638900000013564,
+ 0.24639200000001438,
+ 0.24639200000001438,
+ 0.2463950000000068,
+ 0.24639600000000428,
+ 0.24639600000000428,
+ 0.24639999999999418,
+ 0.24639999999999418,
+ 0.24640099999999165,
+ 0.24640099999999165,
+ 0.24640199999998913,
+ 0.2464110000000801,
+ 0.24641599999995378,
+ 0.24641700000006495,
+ 0.24642200000005232,
+ 0.2464230000000498,
+ 0.24642500000004475,
+ 0.24642599999998538,
+ 0.24642600000004222,
+ 0.24642900000003465,
+ 0.24643300000002455,
+ 0.24643799999989824,
+ 0.24643800000001193,
+ 0.24644000000000688,
+ 0.24644000000012056,
+ 0.2464429999999993,
+ 0.24644499999999425,
+ 0.24644899999998415,
+ 0.24645400000002837,
+ 0.24645800000007512,
+ 0.2464629999999488,
+ 0.2464629999999488,
+ 0.24646400000005997,
+ 0.24646400000005997,
+ 0.24646599999982755,
+ 0.2464670000000524,
+ 0.24646999999993113,
+ 0.24647000000004482,
+ 0.24647400000003472,
+ 0.24647599999997283,
+ 0.24647600000002967,
+ 0.24647700000002715,
+ 0.24647799999991094,
+ 0.24647800000002462,
+ 0.24648400000000947,
+ 0.24648500000012064,
+ 0.2464870000000019,
+ 0.24648900000011054,
+ 0.24649599999997918,
+ 0.24649599999997918,
+ 0.24649799999997413,
+ 0.24649799999997413,
+ 0.24649999999996908,
+ 0.24650100000008024,
+ 0.24650199999996403,
+ 0.24650799999994888,
+ 0.24650999999994383,
+ 0.24651099999999815,
+ 0.24651800000003732,
+ 0.24651899999980742,
+ 0.2465190000000348,
+ 0.24652500000001965,
+ 0.24652600000001712,
+ 0.24652800000001207,
+ 0.2465310000000045,
+ 0.24653199999988828,
+ 0.2465340000001106,
+ 0.2465349999999944,
+ 0.24653699999998935,
+ 0.24653699999998935,
+ 0.24653699999998935,
+ 0.24653999999998177,
+ 0.24654000000009546,
+ 0.24654000000009546,
+ 0.24654099999997925,
+ 0.2465420000000904,
+ 0.24654899999995905,
+ 0.246550999999954,
+ 0.24655299999994895,
+ 0.24655299999994895,
+ 0.24655399999994643,
+ 0.24655400000006011,
+ 0.24655600000005506,
+ 0.2465590000000475,
+ 0.24655999999998812,
+ 0.2465630000000374,
+ 0.24656399999992118,
+ 0.24656600000002982,
+ 0.24656800000002477,
+ 0.2465709999999035,
+ 0.2465750000000071,
+ 0.24657600000000457,
+ 0.24657700000000204,
+ 0.24657799999999952,
+ 0.24657799999999952,
+ 0.24657799999999952,
+ 0.24657999999999447,
+ 0.24658399999998437,
+ 0.2465860000002067,
+ 0.24658799999997427,
+ 0.24658899999985806,
+ 0.2465909999999667,
+ 0.2465930000000185,
+ 0.24659500000007029,
+ 0.24659799999994902,
+ 0.2465990000000602,
+ 0.24659999999994398,
+ 0.24660400000004756,
+ 0.2466049999999882,
+ 0.24660900000003494,
+ 0.24661000000003241,
+ 0.24661000000003241,
+ 0.2466149999999061,
+ 0.24661700000001474,
+ 0.24661999999989348,
+ 0.24662499999999454,
+ 0.2466269999999895,
+ 0.24662800000010066,
+ 0.2466340000000855,
+ 0.24663700000007793,
+ 0.24663999999995667,
+ 0.24664400000006026,
+ 0.2466450000000009,
+ 0.2466460000000552,
+ 0.24664899999993395,
+ 0.24665200000004006,
+ 0.24665399999992133,
+ 0.2466590000000224,
+ 0.24666100000001734,
+ 0.24666500000000724,
+ 0.24666700000011588,
+ 0.24666799999999967,
+ 0.24666799999999967,
+ 0.24666799999999967,
+ 0.24667199999998957,
+ 0.24667299999998704,
+ 0.24667299999998704,
+ 0.246674999999982,
+ 0.24667799999997442,
+ 0.2466789999999719,
+ 0.24667999999996937,
+ 0.24668099999996684,
+ 0.24668100000008053,
+ 0.2466850000000136,
+ 0.24668700000006538,
+ 0.2466909999999416,
+ 0.24669199999993907,
+ 0.24669199999993907,
+ 0.2467020000001412,
+ 0.24670300000002499,
+ 0.24670500000001994,
+ 0.2467070000000149,
+ 0.24670900000000984,
+ 0.24670999999989363,
+ 0.2467110000000048,
+ 0.24671299999999974,
+ 0.2467140000001109,
+ 0.2467149999999947,
+ 0.2467149999999947,
+ 0.24671500000010838,
+ 0.24671599999999216,
+ 0.24671599999999216,
+ 0.24672000000009575,
+ 0.24672900000001619,
+ 0.2467309999999543,
+ 0.2467340000000604,
+ 0.2467349999999442,
+ 0.24673500000000104,
+ 0.24673500000017157,
+ 0.24673599999982798,
+ 0.24673699999993914,
+ 0.24673699999993914,
+ 0.24674300000003768,
+ 0.2467449999999758,
+ 0.24674800000002506,
+ 0.24674900000002253,
+ 0.24675000000002,
+ 0.24675200000001496,
+ 0.24675500000000739,
+ 0.24675500000000739,
+ 0.2467589999998836,
+ 0.24675899999999729,
+ 0.24676099999999224,
+ 0.2467629999999872,
+ 0.2467629999999872,
+ 0.24676399999998466,
+ 0.24676400000021204,
+ 0.2467659999999796,
+ 0.2467659999999796,
+ 0.2467669999999771,
+ 0.24676900000008573,
+ 0.24676900000008573,
+ 0.24677000000002636,
+ 0.2467709999998533,
+ 0.24677299999996194,
+ 0.24677299999996194,
+ 0.24677500000007058,
+ 0.2467789999999468,
+ 0.2467789999999468,
+ 0.24678000000005795,
+ 0.24678000000005795,
+ 0.24678199999993922,
+ 0.24678199999999606,
+ 0.24678300000005038,
+ 0.24678399999993417,
+ 0.24678399999993417,
+ 0.24678400000016154,
+ 0.24678599999992912,
+ 0.24678700000004028,
+ 0.24678800000003775,
+ 0.24678800000003775,
+ 0.24678999999997586,
+ 0.24679100000003018,
+ 0.24679200000014134,
+ 0.2467929999999683,
+ 0.24679399999996576,
+ 0.24679600000001756,
+ 0.24679700000001503,
+ 0.24679900000000998,
+ 0.24680000000000746,
+ 0.24680100000000493,
+ 0.24680100000000493,
+ 0.24680100000000493,
+ 0.2468020000000024,
+ 0.24680299999999988,
+ 0.24680499999999483,
+ 0.2468059999999923,
+ 0.2468090000002121,
+ 0.24681200000009085,
+ 0.24681200000009085,
+ 0.24681700000007822,
+ 0.246817999999962,
+ 0.2468180000000757,
+ 0.24681999999995696,
+ 0.2468220000000656,
+ 0.24682400000006055,
+ 0.24682999999993172,
+ 0.2468309999999292,
+ 0.24683500000003278,
+ 0.24683600000003025,
+ 0.24684099999990394,
+ 0.24684199999990142,
+ 0.24684400000001006,
+ 0.246846000000005,
+ 0.2468469999998888,
+ 0.24684700000000248,
+ 0.24684799999999996,
+ 0.24684899999999743,
+ 0.24685100000010607,
+ 0.24685300000010102,
+ 0.24685599999997976,
+ 0.24685599999997976,
+ 0.24685600000020713,
+ 0.2468579999999747,
+ 0.24686099999985345,
+ 0.24686099999996713,
+ 0.24686200000002145,
+ 0.2468620000000783,
+ 0.24686399999995956,
+ 0.24686600000001135,
+ 0.24686799999994946,
+ 0.24686799999994946,
+ 0.2468699999999444,
+ 0.24687200000005305,
+ 0.24687299999993684,
+ 0.24687300000005052,
+ 0.2468739999999343,
+ 0.24687399999999116,
+ 0.2468780000000379,
+ 0.24687900000003538,
+ 0.24687999999991916,
+ 0.24688099999980295,
+ 0.24688099999991664,
+ 0.2468820000000278,
+ 0.2468820000001415,
+ 0.24688300000002528,
+ 0.24688300000002528,
+ 0.24688400000013644,
+ 0.24688500000002023,
+ 0.2468860000000177,
+ 0.24688800000001265,
+ 0.24688899999989644,
+ 0.24688900000001013,
+ 0.24688900000001013,
+ 0.24689200000000255,
+ 0.24689599999987877,
+ 0.24689599999987877,
+ 0.24689599999999245,
+ 0.24689699999998993,
+ 0.24689699999998993,
+ 0.24689899999998488,
+ 0.24690099999997983,
+ 0.2469019999999773,
+ 0.2469019999999773,
+ 0.24690499999996973,
+ 0.24690499999996973,
+ 0.24690699999996468,
+ 0.24690900000007332,
+ 0.24691200000006575,
+ 0.24691200000006575,
+ 0.24691499999994448,
+ 0.24691499999994448,
+ 0.24691600000005565,
+ 0.24691699999993943,
+ 0.2469179999999369,
+ 0.24691799999999375,
+ 0.24692099999992934,
+ 0.2469229999999243,
+ 0.24692400000003545,
+ 0.2469259999999167,
+ 0.24692800000002535,
+ 0.2469309999999041,
+ 0.24693200000001525,
+ 0.2469340000000102,
+ 0.24693600000000515,
+ 0.2469380000000001,
+ 0.2469380000000001,
+ 0.24694399999998495,
+ 0.24694399999998495,
+ 0.2469459999999799,
+ 0.24694900000002917,
+ 0.24695099999996728,
+ 0.2469579999999496,
+ 0.24696099999982835,
+ 0.2469619999999395,
+ 0.2469620000000532,
+ 0.24696399999993446,
+ 0.24696800000015173,
+ 0.24696900000003552,
+ 0.246970000000033,
+ 0.24697100000003047,
+ 0.24697300000002542,
+ 0.24697300000002542,
+ 0.24697600000001785,
+ 0.2469780000000128,
+ 0.24698000000000775,
+ 0.24698000000000775,
+ 0.2469820000000027,
+ 0.24698699999999008,
+ 0.24698700000010376,
+ 0.24698799999998755,
+ 0.24698799999998755,
+ 0.24698899999998503,
+ 0.24699099999997998,
+ 0.24699199999997745,
+ 0.24699299999997493,
+ 0.2469940000000861,
+ 0.2469960000000242,
+ 0.24699699999996483,
+ 0.246998000000076,
+ 0.24699899999995978,
+ 0.24700100000001157,
+ 0.2470020000000659,
+ 0.2470020000000659,
+ 0.24700299999994968,
+ 0.24700499999994463,
+ 0.24700499999994463,
+ 0.24700799999982337,
+ 0.24700800000005074,
+ 0.24700800000005074,
+ 0.24700900000004822,
+ 0.24701099999998632,
+ 0.24701099999998632,
+ 0.24701300000003812,
+ 0.24701399999997875,
+ 0.24701600000003054,
+ 0.24701600000003054,
+ 0.2470220000000154,
+ 0.24702300000001287,
+ 0.24702300000001287,
+ 0.24702300000001287,
+ 0.24702499999989413,
+ 0.24702800000000025,
+ 0.247030999999879,
+ 0.24703099999999267,
+ 0.24703100000010636,
+ 0.24703199999999015,
+ 0.24703199999999015,
+ 0.24703299999987394,
+ 0.2470339999999851,
+ 0.2470339999999851,
+ 0.2470339999999851,
+ 0.24703499999998257,
+ 0.24703499999998257,
+ 0.24703599999998005,
+ 0.24703599999998005,
+ 0.24703699999986384,
+ 0.24703699999997752,
+ 0.24703699999997752,
+ 0.2470370000000912,
+ 0.2470419999999649,
+ 0.2470419999999649,
+ 0.2470460000000685,
+ 0.24704900000006091,
+ 0.2470499999999447,
+ 0.24705099999999902,
+ 0.24705100000005586,
+ 0.24705100000005586,
+ 0.24705200000005334,
+ 0.24705200000005334,
+ 0.2470540000000483,
+ 0.24705499999993208,
+ 0.24705999999991946,
+ 0.24706000000003314,
+ 0.24706100000003062,
+ 0.24706100000003062,
+ 0.2470620000000281,
+ 0.24706299999991188,
+ 0.24706900000001042,
+ 0.24706900000001042,
+ 0.2470700000000079,
+ 0.24707100000000537,
+ 0.24707300000000032,
+ 0.24707499999999527,
+ 0.24707499999999527,
+ 0.24707499999999527,
+ 0.24707899999998517,
+ 0.24708299999997507,
+ 0.24708399999997255,
+ 0.24708400000008623,
+ 0.2470859999998538,
+ 0.2470859999999675,
+ 0.2470859999999675,
+ 0.24708700000002182,
+ 0.24708899999995992,
+ 0.24709099999995487,
+ 0.24709099999995487,
+ 0.247094000000061,
+ 0.24709500000000162,
+ 0.24709500000000162,
+ 0.24709599999994225,
+ 0.24709600000005594,
+ 0.2470970000000534,
+ 0.2470979999999372,
+ 0.2470980000000509,
+ 0.24709899999993468,
+ 0.24709900000004836,
+ 0.24709900000004836,
+ 0.2471010000000433,
+ 0.247105999999917,
+ 0.247105999999917,
+ 0.24710800000002564,
+ 0.24710899999990943,
+ 0.24711100000001807,
+ 0.24711100000001807,
+ 0.2471140000000105,
+ 0.2471140000000105,
+ 0.24711500000000797,
+ 0.24711500000000797,
+ 0.24711700000000292,
+ 0.2471170000001166,
+ 0.2471170000001166,
+ 0.24711999999999534,
+ 0.24712300000010146,
+ 0.24712400000009893,
+ 0.2471250000000964,
+ 0.2471259999999802,
+ 0.24712699999997767,
+ 0.24712700000009136,
+ 0.24712799999997515,
+ 0.24712899999997262,
+ 0.24712899999997262,
+ 0.2471299999999701,
+ 0.2471299999999701,
+ 0.24713400000007368,
+ 0.24713499999984379,
+ 0.24713699999983874,
+ 0.24713699999995242,
+ 0.2471379999999499,
+ 0.24714300000005096,
+ 0.2471450000000459,
+ 0.24714700000004086,
+ 0.2471500000000333,
+ 0.2471530000000257,
+ 0.2471539999999095,
+ 0.24715600000001814,
+ 0.24715699999990193,
+ 0.24716000000000804,
+ 0.2471659999999929,
+ 0.24716699999999037,
+ 0.24716699999999037,
+ 0.24716800000010153,
+ 0.24717000000009648,
+ 0.24717099999998027,
+ 0.24717199999997774,
+ 0.24717199999997774,
+ 0.24717499999997017,
+ 0.24717599999996764,
+ 0.2471760000000245,
+ 0.24717699999996512,
+ 0.24717699999996512,
+ 0.24717699999996512,
+ 0.2471779999999626,
+ 0.24717800000007628,
+ 0.24717800000007628,
+ 0.24717899999996007,
+ 0.24717999999995754,
+ 0.24718000000007123,
+ 0.24718499999994492,
+ 0.24718699999999671,
+ 0.2471879999999942,
+ 0.24718800000005103,
+ 0.2471930000000384,
+ 0.24719399999997904,
+ 0.24719500000003336,
+ 0.24719699999991462,
+ 0.2471970000000283,
+ 0.24719799999996894,
+ 0.24719800000002579,
+ 0.24719900000002326,
+ 0.24719900000002326,
+ 0.24720000000002074,
+ 0.24720099999990452,
+ 0.24720199999995884,
+ 0.24720499999989443,
+ 0.24720499999989443,
+ 0.2472060000000056,
+ 0.24720800000000054,
+ 0.24721099999999296,
+ 0.2472219999999652,
+ 0.24722299999984898,
+ 0.2472230000000195,
+ 0.24722300000007635,
+ 0.24722600000006878,
+ 0.2472270000000094,
+ 0.24722799999995004,
+ 0.24723400000004858,
+ 0.24723499999993237,
+ 0.24723499999993237,
+ 0.24723500000004606,
+ 0.24723599999992985,
+ 0.24723699999992732,
+ 0.24723800000003848,
+ 0.24723999999991975,
+ 0.24724300000002586,
+ 0.24724600000001828,
+ 0.24724700000001576,
+ 0.2472499999998945,
+ 0.24725100000000566,
+ 0.2472530000000006,
+ 0.2472539999999981,
+ 0.24725400000011177,
+ 0.24725499999999556,
+ 0.247257999999988,
+ 0.24725800000010167,
+ 0.24725899999998546,
+ 0.2472619999999779,
+ 0.2472619999999779,
+ 0.24726299999997536,
+ 0.24726299999997536,
+ 0.2472659999999678,
+ 0.24726699999996526,
+ 0.24726699999996526,
+ 0.2472699999999577,
+ 0.24727200000006633,
+ 0.2472739999999476,
+ 0.24727499999994507,
+ 0.24727499999994507,
+ 0.2472750000000019,
+ 0.2472779999998238,
+ 0.2472779999999375,
+ 0.24727800000005118,
+ 0.24727999999993244,
+ 0.24728000000004613,
+ 0.24728000000004613,
+ 0.24728000000004613,
+ 0.24728099999992992,
+ 0.2472819999999274,
+ 0.24728299999992487,
+ 0.24728499999991982,
+ 0.24728699999991477,
+ 0.24729200000001583,
+ 0.24729400000001078,
+ 0.24729400000001078,
+ 0.24729400000001078,
+ 0.24729699999988952,
+ 0.2472970000000032,
+ 0.2472970000000032,
+ 0.24730200000010427,
+ 0.24730399999998554,
+ 0.247304999999983,
+ 0.2473050000000967,
+ 0.24730799999997544,
+ 0.24730900000002976,
+ 0.24731000000002723,
+ 0.24731099999996786,
+ 0.2473129999999628,
+ 0.2473139999999603,
+ 0.2473139999999603,
+ 0.24731600000006893,
+ 0.24731700000000956,
+ 0.24731999999994514,
+ 0.2473210000000563,
+ 0.2473229999999944,
+ 0.24732399999993504,
+ 0.24732499999993252,
+ 0.24732499999993252,
+ 0.24732599999993,
+ 0.24732599999998683,
+ 0.24732600000004368,
+ 0.24732600000004368,
+ 0.24732699999981378,
+ 0.24732800000015231,
+ 0.2473299999999199,
+ 0.24733299999991232,
+ 0.2473339999999098,
+ 0.24733400000002348,
+ 0.24733800000001338,
+ 0.24733800000012707,
+ 0.24733899999989717,
+ 0.24733900000001086,
+ 0.24734000000012202,
+ 0.24734300000000076,
+ 0.24734300000000076,
+ 0.24734399999999823,
+ 0.2473449999999957,
+ 0.2473449999999957,
+ 0.2473449999999957,
+ 0.24734600000010687,
+ 0.24734699999999066,
+ 0.2473489999999856,
+ 0.24734999999998308,
+ 0.24735099999998056,
+ 0.2473529999999755,
+ 0.24735599999985425,
+ 0.24735700000002225,
+ 0.24735899999996036,
+ 0.2473609999999553,
+ 0.24736300000006395,
+ 0.2473649999999452,
+ 0.2473650000000589,
+ 0.2473650000000589,
+ 0.24736700000005385,
+ 0.24736800000005132,
+ 0.2473709999999869,
+ 0.2473709999999869,
+ 0.24737199999981385,
+ 0.2473730000000387,
+ 0.2473730000000387,
+ 0.24737800000002608,
+ 0.24738000000002103,
+ 0.24738000000002103,
+ 0.24738000000002103,
+ 0.24738099999990482,
+ 0.24738099999990482,
+ 0.24738300000012714,
+ 0.24738499999995156,
+ 0.24738600000000588,
+ 0.24738699999988967,
+ 0.24738800000000083,
+ 0.24738800000000083,
+ 0.2473889999999983,
+ 0.24738999999999578,
+ 0.24739100000010694,
+ 0.24739599999998063,
+ 0.2473969999999781,
+ 0.24739800000008927,
+ 0.24739999999997053,
+ 0.24740199999996548,
+ 0.24740299999996296,
+ 0.24740299999996296,
+ 0.24740399999996043,
+ 0.24740399999996043,
+ 0.24740399999996043,
+ 0.2474050000000716,
+ 0.24740599999995538,
+ 0.24740799999995033,
+ 0.2474109999999996,
+ 0.2474109999999996,
+ 0.24741100000005645,
+ 0.24741100000005645,
+ 0.2474129999999377,
+ 0.24741500000004635,
+ 0.24741500000004635,
+ 0.24741600000004382,
+ 0.24741800000003877,
+ 0.24741900000003625,
+ 0.24741999999992004,
+ 0.24741999999992004,
+ 0.2474250000000211,
+ 0.2474250000000211,
+ 0.2474259999999049,
+ 0.247429000000011,
+ 0.2474320000001171,
+ 0.2474330000000009,
+ 0.2474330000000009,
+ 0.2474330000000009,
+ 0.24743499999999585,
+ 0.2474369999999908,
+ 0.2474369999999908,
+ 0.24743999999986954,
+ 0.2474409999999807,
+ 0.2474409999999807,
+ 0.24744299999997565,
+ 0.24744299999997565,
+ 0.24744300000008934,
+ 0.24744399999997313,
+ 0.24744599999996808,
+ 0.24744699999996556,
+ 0.24744799999996303,
+ 0.2474489999999605,
+ 0.24744900000001735,
+ 0.24745200000006662,
+ 0.2474569999999403,
+ 0.24746000000004642,
+ 0.2474609999999302,
+ 0.24746200000004137,
+ 0.24746200000004137,
+ 0.24746400000003632,
+ 0.24746400000003632,
+ 0.24747000000002117,
+ 0.24747099999990496,
+ 0.24747099999990496,
+ 0.24747199999995928,
+ 0.24747200000001612,
+ 0.24747200000001612,
+ 0.24747400000001107,
+ 0.24747500000000855,
+ 0.24747600000000602,
+ 0.24747600000000602,
+ 0.24747600000000602,
+ 0.24747800000000097,
+ 0.24747999999999593,
+ 0.2474809999999934,
+ 0.24748199999999088,
+ 0.24748299999998835,
+ 0.24748399999998583,
+ 0.2474849999999833,
+ 0.24748599999998078,
+ 0.24748699999997825,
+ 0.24748800000008941,
+ 0.2474890000000869,
+ 0.24748999999997068,
+ 0.24749000000002752,
+ 0.24749099999985447,
+ 0.2474929999999631,
+ 0.2474930000000768,
+ 0.24749399999996058,
+ 0.24749400000007427,
+ 0.247496999999953,
+ 0.247496999999953,
+ 0.2474990000000048,
+ 0.24750199999994038,
+ 0.24750300000005154,
+ 0.2475050000000465,
+ 0.24750599999998713,
+ 0.24750699999992776,
+ 0.24750700000004144,
+ 0.2475080000001526,
+ 0.2475090000000364,
+ 0.2475090000000364,
+ 0.24751000000003387,
+ 0.24751000000003387,
+ 0.24751200000002882,
+ 0.2475120000001425,
+ 0.2475130000000263,
+ 0.24751400000002377,
+ 0.24751400000002377,
+ 0.2475170000000162,
+ 0.24751800000001367,
+ 0.24751999999989494,
+ 0.24752000000000862,
+ 0.2475200000001223,
+ 0.2475210000000061,
+ 0.24752200000000357,
+ 0.24752200000000357,
+ 0.24752600000010716,
+ 0.24752999999998337,
+ 0.247532000000092,
+ 0.24753499999997075,
+ 0.24753499999997075,
+ 0.24753600000002507,
+ 0.24753800000007686,
+ 0.24753999999995813,
+ 0.2475419999998394,
+ 0.2475419999998394,
+ 0.24754200000000992,
+ 0.24754200000006676,
+ 0.24754299999995055,
+ 0.2475430000000074,
+ 0.2475459999998293,
+ 0.2475459999998293,
+ 0.24754600000005667,
+ 0.24754700000005414,
+ 0.24754700000005414,
+ 0.24755100000004404,
+ 0.24755399999992278,
+ 0.24755400000003647,
+ 0.24755500000003394,
+ 0.24755800000002637,
+ 0.24755899999991016,
+ 0.24755999999996448,
+ 0.24756000000002132,
+ 0.24756399999989753,
+ 0.24757399999998597,
+ 0.24757399999998597,
+ 0.24757499999998345,
+ 0.24757599999998092,
+ 0.2475760000000946,
+ 0.24757799999997587,
+ 0.24758199999996577,
+ 0.24758199999996577,
+ 0.24758199999996577,
+ 0.24758200000002262,
+ 0.24758300000007694,
+ 0.24758399999996072,
+ 0.2475849999999582,
+ 0.2475849999999582,
+ 0.24758599999995567,
+ 0.24758700000006684,
+ 0.24758799999995063,
+ 0.2475880000000643,
+ 0.24759000000000242,
+ 0.2475909999999999,
+ 0.24759199999994053,
+ 0.2475930000000517,
+ 0.2475930000000517,
+ 0.2475930000000517,
+ 0.24759799999992538,
+ 0.24759800000003906,
+ 0.2475989999999797,
+ 0.24760099999980412,
+ 0.24760199999991528,
+ 0.2476029999999696,
+ 0.24760300000002644,
+ 0.24760400000002392,
+ 0.24760700000001634,
+ 0.24760700000001634,
+ 0.2476090000000113,
+ 0.24760999999989508,
+ 0.24761000000000877,
+ 0.24761000000012245,
+ 0.24761000000012245,
+ 0.24761499999999614,
+ 0.2476169999999911,
+ 0.247620999999981,
+ 0.24762100000003784,
+ 0.24762199999986478,
+ 0.24762199999997847,
+ 0.24762299999997595,
+ 0.24762699999996585,
+ 0.24762799999984964,
+ 0.2476289999999608,
+ 0.2476289999999608,
+ 0.24762900000007448,
+ 0.24763099999995575,
+ 0.24763199999995322,
+ 0.2476320000000669,
+ 0.2476329999999507,
+ 0.24763300000006438,
+ 0.24763400000006186,
+ 0.24763599999999997,
+ 0.24763700000005429,
+ 0.24763899999993555,
+ 0.2476400000000467,
+ 0.2476410000000442,
+ 0.24764200000004166,
+ 0.2476440000000366,
+ 0.2476440000000366,
+ 0.24765100000001894,
+ 0.247654999999952,
+ 0.24765600000000632,
+ 0.24765800000000127,
+ 0.24765800000000127,
+ 0.24765800000000127,
+ 0.24765999999999622,
+ 0.24766399999998612,
+ 0.24766599999998107,
+ 0.2476680000000897,
+ 0.24766999999997097,
+ 0.24767100000008213,
+ 0.24767199999996592,
+ 0.24767499999984466,
+ 0.2476760000000695,
+ 0.247682999999995,
+ 0.24768600000015795,
+ 0.24768699999992805,
+ 0.24768799999992552,
+ 0.24768799999992552,
+ 0.24768799999998237,
+ 0.2476889999998093,
+ 0.2476920000000291,
+ 0.2476930000000266,
+ 0.24769400000002406,
+ 0.2476970000000165,
+ 0.24769800000001396,
+ 0.2477010000000064,
+ 0.24770200000000386,
+ 0.2477049999999963,
+ 0.2477049999999963,
+ 0.24770599999999376,
+ 0.2477080000001024,
+ 0.2477089999999862,
+ 0.2477089999999862,
+ 0.24770999999998367,
+ 0.24771099999998114,
+ 0.24771099999998114,
+ 0.2477129999999761,
+ 0.24771500000008473,
+ 0.2477160000000822,
+ 0.2477180000000203,
+ 0.24771899999996094,
+ 0.24771900000001779,
+ 0.24771999999995842,
+ 0.2477200000000721,
+ 0.2477230000000077,
+ 0.2477230000000077,
+ 0.24772399999994832,
+ 0.24772599999994327,
+ 0.24772799999993822,
+ 0.2477289999999357,
+ 0.24772900000004938,
+ 0.24773100000004433,
+ 0.24773199999992812,
+ 0.2477320000000418,
+ 0.2477360000000317,
+ 0.24774300000001404,
+ 0.24774500000000899,
+ 0.24774500000000899,
+ 0.24774500000000899,
+ 0.24774600000000646,
+ 0.24774600000000646,
+ 0.24774699999989025,
+ 0.24775099999999384,
+ 0.24775100000010752,
+ 0.2477519999999913,
+ 0.2477519999999913,
+ 0.24775399999998626,
+ 0.24775399999998626,
+ 0.2477559999999812,
+ 0.24775999999997111,
+ 0.24776000000002796,
+ 0.24776199999996606,
+ 0.24776299999996354,
+ 0.24776300000007723,
+ 0.24776599999995597,
+ 0.24776599999995597,
+ 0.2477700000000027,
+ 0.24777100000005703,
+ 0.24777499999981956,
+ 0.24777800000003936,
+ 0.24777800000003936,
+ 0.24777899999980946,
+ 0.24777999999992062,
+ 0.2477800000000343,
+ 0.2477809999999181,
+ 0.24778199999991557,
+ 0.24778399999991052,
+ 0.2477840000000242,
+ 0.2477840000000242,
+ 0.2477840000001379,
+ 0.24778500000002168,
+ 0.24778500000002168,
+ 0.24778500000002168,
+ 0.24779100000000653,
+ 0.24779300000000148,
+ 0.24779399999988527,
+ 0.24779399999999896,
+ 0.24779399999999896,
+ 0.2477960000001076,
+ 0.24779699999999139,
+ 0.2478009999999813,
+ 0.2478049999999712,
+ 0.24780599999996866,
+ 0.24780599999996866,
+ 0.2478070000001935,
+ 0.24781099999995604,
+ 0.24781500000000278,
+ 0.24781599999994341,
+ 0.2478160000000571,
+ 0.24781899999993584,
+ 0.24781899999993584,
+ 0.24781899999993584,
+ 0.247820000000047,
+ 0.24782199999992827,
+ 0.24782300000003943,
+ 0.24782500000003438,
+ 0.24782500000014807,
+ 0.24782600000003185,
+ 0.24782900000002428,
+ 0.24783300000001418,
+ 0.24783899999999903,
+ 0.24783899999999903,
+ 0.2478439999999864,
+ 0.24784699999997883,
+ 0.24784700000009252,
+ 0.24784899999997378,
+ 0.24785099999985505,
+ 0.24785099999985505,
+ 0.2478519999999662,
+ 0.24785299999996369,
+ 0.24785399999996116,
+ 0.2478569999998399,
+ 0.2478569999999536,
+ 0.24785900000006222,
+ 0.24786299999993844,
+ 0.2478639999999359,
+ 0.2478640000001633,
+ 0.2478659999999877,
+ 0.24786799999992581,
+ 0.2478680000000395,
+ 0.2478680000001532,
+ 0.24786900000003698,
+ 0.24787100000003193,
+ 0.2478720000000294,
+ 0.24787300000002688,
+ 0.24787399999991067,
+ 0.247876000000133,
+ 0.24787700000001678,
+ 0.24787900000001173,
+ 0.24788300000000163,
+ 0.24788300000000163,
+ 0.24788499999999658,
+ 0.24788799999987532,
+ 0.24788899999998648,
+ 0.24788900000004332,
+ 0.24789000000009764,
+ 0.24789499999997133,
+ 0.24789600000002565,
+ 0.24789799999996376,
+ 0.24789899999996123,
+ 0.2479000000000724,
+ 0.24790099999995618,
+ 0.24790200000006735,
+ 0.24790200000006735,
+ 0.24790399999983492,
+ 0.2479040000000623,
+ 0.247908999999936,
+ 0.24791099999993094,
+ 0.2479120000000421,
+ 0.24791300000003957,
+ 0.24791399999980968,
+ 0.2479159999999183,
+ 0.247916000000032,
+ 0.2479179999999701,
+ 0.24791800000002695,
+ 0.2479240000000118,
+ 0.24792600000000675,
+ 0.24792899999999918,
+ 0.2479329999998754,
+ 0.24793499999998403,
+ 0.2479399999999714,
+ 0.24794199999996636,
+ 0.24794199999996636,
+ 0.24794299999985014,
+ 0.24794300000007752,
+ 0.247944000000075,
+ 0.24794700000006742,
+ 0.24794800000000805,
+ 0.24794900000006237,
+ 0.24794999999994616,
+ 0.24795399999993606,
+ 0.2479560000000447,
+ 0.2479560000000447,
+ 0.24795700000004217,
+ 0.24795900000003712,
+ 0.2479639999999108,
+ 0.24796599999990576,
+ 0.24796600000001945,
+ 0.2479680000000144,
+ 0.24797100000000682,
+ 0.2479720000000043,
+ 0.24797399999999925,
+ 0.24798099999998158,
+ 0.24798199999997905,
+ 0.24798299999997653,
+ 0.24798499999997148,
+ 0.24798600000008264,
+ 0.24798699999996643,
+ 0.2479880000000776,
+ 0.2479880000000776,
+ 0.24798899999996138,
+ 0.24799000000007254,
+ 0.2479920000000675,
+ 0.24799299999995128,
+ 0.24799399999994876,
+ 0.24799499999994623,
+ 0.24799499999994623,
+ 0.24799499999994623,
+ 0.24799500000005992,
+ 0.24799700000016855,
+ 0.2479979999999955,
+ 0.24799800000005234,
+ 0.24800300000003972,
+ 0.24800699999991593,
+ 0.24800699999991593,
+ 0.24800700000002962,
+ 0.24800700000002962,
+ 0.24801099999990583,
+ 0.24801300000012816,
+ 0.24801400000001195,
+ 0.24801500000000942,
+ 0.24801500000000942,
+ 0.24801700000000437,
+ 0.24801899999999932,
+ 0.24801899999999932,
+ 0.24801899999999932,
+ 0.2480199999999968,
+ 0.2480239999999867,
+ 0.2480239999999867,
+ 0.24802599999998165,
+ 0.2480270000000928,
+ 0.2480279999999766,
+ 0.2480279999999766,
+ 0.24802999999997155,
+ 0.24802999999997155,
+ 0.2480300000000284,
+ 0.2480319999999665,
+ 0.24803299999996398,
+ 0.24803700000006756,
+ 0.24804100000005747,
+ 0.24804199999994125,
+ 0.2480419999999981,
+ 0.24804299999993873,
+ 0.24804300000005242,
+ 0.24804300000005242,
+ 0.2480439999999362,
+ 0.24804500000004737,
+ 0.2480479999999261,
+ 0.2480479999999261,
+ 0.24805000000003474,
+ 0.24805100000003222,
+ 0.2480559999999059,
+ 0.24805600000013328,
+ 0.24806100000000697,
+ 0.24806300000000192,
+ 0.24806300000000192,
+ 0.24806599999999435,
+ 0.2480679999999893,
+ 0.24807000000009793,
+ 0.2480719999998655,
+ 0.24807299999997667,
+ 0.24808100000007016,
+ 0.24808199999984026,
+ 0.24808199999995395,
+ 0.2480830000000651,
+ 0.24808499999994638,
+ 0.24808799999999565,
+ 0.2480880000000525,
+ 0.2480880000000525,
+ 0.2480880000000525,
+ 0.24809000000004744,
+ 0.2480920000000424,
+ 0.24809800000002724,
+ 0.2480990000001384,
+ 0.24810100000001967,
+ 0.24810299999990093,
+ 0.2481040000000121,
+ 0.24810500000000957,
+ 0.24810899999988578,
+ 0.24810999999999694,
+ 0.2481119999999919,
+ 0.24811499999998432,
+ 0.24811699999986558,
+ 0.24811799999997675,
+ 0.24811799999997675,
+ 0.24811799999997675,
+ 0.24812000000002854,
+ 0.24812000000008538,
+ 0.2481239999999616,
+ 0.2481239999999616,
+ 0.24812400000007528,
+ 0.24812500000007276,
+ 0.24812599999995655,
+ 0.2481279999999515,
+ 0.2481310000000576,
+ 0.2481310000000576,
+ 0.24813499999982014,
+ 0.2481359999999313,
+ 0.24813699999992878,
+ 0.24813899999981004,
+ 0.2481390000000374,
+ 0.2481399999999212,
+ 0.2481400000000349,
+ 0.24814500000002226,
+ 0.24814600000001974,
+ 0.24814700000001721,
+ 0.24815499999999702,
+ 0.24816099999998187,
+ 0.24816099999998187,
+ 0.24816299999997682,
+ 0.2481639999998606,
+ 0.24816499999997177,
+ 0.24816599999996924,
+ 0.24816600000008293,
+ 0.24816699999996672,
+ 0.24816899999996167,
+ 0.24816899999996167,
+ 0.2481719999999541,
+ 0.2481719999999541,
+ 0.2481870000000299,
+ 0.24819000000002234,
+ 0.2481920000000173,
+ 0.24819400000001224,
+ 0.24819700000011835,
+ 0.24819899999999961,
+ 0.2481990000001133,
+ 0.2481999999999971,
+ 0.2481999999999971,
+ 0.24820400000010068,
+ 0.24820499999998447,
+ 0.24820699999997942,
+ 0.2482079999999769,
+ 0.24821099999996932,
+ 0.24821099999996932,
+ 0.24821700000006786,
+ 0.24821799999995164,
+ 0.24821799999995164,
+ 0.24821899999994912,
+ 0.24822999999992135,
+ 0.2482310000000325,
+ 0.24823300000002746,
+ 0.24823300000002746,
+ 0.24823399999991125,
+ 0.24823400000002493,
+ 0.24823400000002493,
+ 0.24823600000001989,
+ 0.24823600000013357,
+ 0.24823700000001736,
+ 0.24823700000001736,
+ 0.2482439999999997,
+ 0.24824400000011337,
+ 0.24824499999999716,
+ 0.24824899999998706,
+ 0.24824900000021444,
+ 0.24825000000009823,
+ 0.24825600000008308,
+ 0.24825800000007803,
+ 0.24826100000007045,
+ 0.24826299999995172,
+ 0.24826600000005783,
+ 0.24827299999992647,
+ 0.24827399999992394,
+ 0.24827600000003258,
+ 0.24827699999991637,
+ 0.24827700000003006,
+ 0.24828000000002248,
+ 0.24828200000001743,
+ 0.24828299999990122,
+ 0.24828800000000228,
+ 0.24828899999988607,
+ 0.24829199999999219,
+ 0.2482949999999846,
+ 0.2482989999999745,
+ 0.248299999999972,
+ 0.2483030000000781,
+ 0.24830499999995936,
+ 0.24830499999995936,
+ 0.24831000000006043,
+ 0.24832200000003013,
+ 0.24832800000001498,
+ 0.24832900000001246,
+ 0.24833200000011857,
+ 0.24833300000000236,
+ 0.24833300000000236,
+ 0.2483349999999973,
+ 0.2483349999999973,
+ 0.248335000000111,
+ 0.2483359999998811,
+ 0.24833600000010847,
+ 0.24833699999999226,
+ 0.24833799999998973,
+ 0.2483429999999771,
+ 0.24834500000008575,
+ 0.24834599999996954,
+ 0.24834899999996196,
+ 0.24835299999995186,
+ 0.24835500000000366,
+ 0.24835600000005797,
+ 0.24835699999994176,
+ 0.24835800000005293,
+ 0.2483590000000504,
+ 0.2483590000000504,
+ 0.24836100000004535,
+ 0.24836299999992661,
+ 0.24836600000003273,
+ 0.24836699999991652,
+ 0.24836900000002515,
+ 0.24837200000001758,
+ 0.24837400000001253,
+ 0.2483759999998938,
+ 0.24837600000000748,
+ 0.24837700000000495,
+ 0.24837800000000243,
+ 0.24837999999999738,
+ 0.24838199999999233,
+ 0.24838299999987612,
+ 0.2483829999999898,
+ 0.24838499999998476,
+ 0.24838600000009592,
+ 0.24838799999997718,
+ 0.24838800000009087,
+ 0.24838900000008834,
+ 0.24839599999995698,
+ 0.24839600000007067,
+ 0.24839799999995194,
+ 0.2484029999999393,
+ 0.24840500000004795,
+ 0.24840599999993174,
+ 0.2484070000000429,
+ 0.24840900000003785,
+ 0.24840999999992164,
+ 0.2484110000000328,
+ 0.24841200000003028,
+ 0.24841300000002775,
+ 0.2484150000000227,
+ 0.24842000000001008,
+ 0.24842000000012376,
+ 0.24842100000000755,
+ 0.2484230000000025,
+ 0.24842399999999998,
+ 0.24842499999999745,
+ 0.24842599999988124,
+ 0.2484269999999924,
+ 0.24842899999998735,
+ 0.24843000000009852,
+ 0.2484309999999823,
+ 0.24843599999996968,
+ 0.24843800000007832,
+ 0.24844799999993938,
+ 0.2484529999999836,
+ 0.24845300000004045,
+ 0.24845300000015413,
+ 0.24845399999992424,
+ 0.24845399999992424,
+ 0.2484550000000354,
+ 0.24845600000003287,
+ 0.24845700000003035,
+ 0.24845799999991414,
+ 0.24845800000002782,
+ 0.24846099999990656,
+ 0.24846100000002025,
+ 0.2484629999999015,
+ 0.2484670000000051,
+ 0.2484670000000051,
+ 0.24846800000000258,
+ 0.24846900000000005,
+ 0.24846900000000005,
+ 0.24846900000000005,
+ 0.2484710000001087,
+ 0.24847699999997985,
+ 0.24847999999997228,
+ 0.24848000000008597,
+ 0.2484830000000784,
+ 0.24848399999996218,
+ 0.24848500000007334,
+ 0.24848500000007334,
+ 0.2484870000000683,
+ 0.24848999999994703,
+ 0.24849000000006072,
+ 0.24849100000000135,
+ 0.24849300000005314,
+ 0.2484950000000481,
+ 0.24849999999992178,
+ 0.24850500000002285,
+ 0.248506000000134,
+ 0.24850699999996095,
+ 0.24850899999989906,
+ 0.24851000000001022,
+ 0.24851300000000265,
+ 0.2485159999998814,
+ 0.24851599999999507,
+ 0.24851799999999002,
+ 0.24852199999997993,
+ 0.24852199999997993,
+ 0.24852399999997488,
+ 0.24852899999996225,
+ 0.2485309999999572,
+ 0.24853200000006836,
+ 0.24853200000006836,
+ 0.24853700000005574,
+ 0.24854000000004817,
+ 0.24854099999993196,
+ 0.24854200000004312,
+ 0.24854200000004312,
+ 0.24854200000004312,
+ 0.2485429999999269,
+ 0.2485429999999269,
+ 0.2485430000000406,
+ 0.24854400000003807,
+ 0.24854600000003302,
+ 0.24854800000002797,
+ 0.24855299999990166,
+ 0.24855300000001534,
+ 0.24855700000000525,
+ 0.24855800000000272,
+ 0.2485590000000002,
+ 0.24856099999988146,
+ 0.24856100000010883,
+ 0.24856399999998757,
+ 0.2485710000000836,
+ 0.24857200000008106,
+ 0.24857799999995223,
+ 0.24857799999995223,
+ 0.2485790000000634,
+ 0.24857999999994718,
+ 0.24858000000006086,
+ 0.24858000000017455,
+ 0.24858399999993708,
+ 0.24858599999993203,
+ 0.24858900000003814,
+ 0.24858999999997877,
+ 0.24859399999996867,
+ 0.24859400000002552,
+ 0.24859400000002552,
+ 0.2485969999999611,
+ 0.24859700000001794,
+ 0.2485990000000129,
+ 0.24860000000001037,
+ 0.24860100000000784,
+ 0.24860100000000784,
+ 0.24860200000000532,
+ 0.2486030000000028,
+ 0.2486069999999927,
+ 0.2486069999999927,
+ 0.24860900000010133,
+ 0.2486100000000988,
+ 0.24861199999998007,
+ 0.24861299999997755,
+ 0.24861299999997755,
+ 0.24861399999997502,
+ 0.24861500000019987,
+ 0.24861599999996997,
+ 0.24861699999996745,
+ 0.2486180000000786,
+ 0.24862099999995735,
+ 0.24862400000006346,
+ 0.24862499999994725,
+ 0.2486269999999422,
+ 0.24862699999999904,
+ 0.24862800000005336,
+ 0.24862800000005336,
+ 0.24864000000002306,
+ 0.24864100000002054,
+ 0.24864400000001297,
+ 0.24864600000000792,
+ 0.24864900000000034,
+ 0.2486509999999953,
+ 0.2486509999999953,
+ 0.24865199999999277,
+ 0.24865999999997257,
+ 0.24865999999997257,
+ 0.24866099999985636,
+ 0.24866099999997004,
+ 0.2486610000000269,
+ 0.24866200000002436,
+ 0.24866399999996247,
+ 0.24866599999995742,
+ 0.24866800000006606,
+ 0.24866999999994732,
+ 0.2486740000000509,
+ 0.24867700000004334,
+ 0.24867799999992712,
+ 0.24867900000003829,
+ 0.24867999999997892,
+ 0.24868100000003324,
+ 0.2486820000000307,
+ 0.2486830000000282,
+ 0.24868500000002314,
+ 0.24868500000002314,
+ 0.2486870000000181,
+ 0.24868899999989935,
+ 0.24868900000001304,
+ 0.24868900000001304,
+ 0.2486900000000105,
+ 0.24869200000011915,
+ 0.24869300000000294,
+ 0.24869699999999284,
+ 0.24869799999987663,
+ 0.248698000000104,
+ 0.248698000000104,
+ 0.24870199999998022,
+ 0.2487020000000939,
+ 0.24870399999986148,
+ 0.24870399999997517,
+ 0.24870400000008885,
+ 0.24870499999997264,
+ 0.24870599999985643,
+ 0.24870899999996254,
+ 0.2487100000000737,
+ 0.2487149999999474,
+ 0.24871599999994487,
+ 0.24872100000004593,
+ 0.2487220000000434,
+ 0.24872499999992215,
+ 0.24872599999991962,
+ 0.2487260000000333,
+ 0.2487269999999171,
+ 0.24872700000014447,
+ 0.24872800000002826,
+ 0.2487300000000232,
+ 0.2487300000000232,
+ 0.24873100000002069,
+ 0.2487350000000106,
+ 0.24873600000000806,
+ 0.24873600000000806,
+ 0.2487389999998868,
+ 0.24873999999999796,
+ 0.2487419999999929,
+ 0.2487419999999929,
+ 0.2487419999999929,
+ 0.2487429999999904,
+ 0.2487429999999904,
+ 0.2487469999999803,
+ 0.24874700000009398,
+ 0.24874799999997776,
+ 0.24874800000009145,
+ 0.24875000000002956,
+ 0.24875199999996767,
+ 0.2487540000000763,
+ 0.24875700000006873,
+ 0.24875700000006873,
+ 0.24875799999995252,
+ 0.24875899999995,
+ 0.24876199999994242,
+ 0.24876199999994242,
+ 0.2487620000000561,
+ 0.24876599999998916,
+ 0.24876800000004096,
+ 0.24876900000003843,
+ 0.24876999999992222,
+ 0.24877199999991717,
+ 0.24877200000003086,
+ 0.24877300000002833,
+ 0.2487740000000258,
+ 0.24877500000002328,
+ 0.24877699999979086,
+ 0.24877900000001318,
+ 0.2487820000000056,
+ 0.2487820000000056,
+ 0.24878499999999804,
+ 0.24878800000010415,
+ 0.24878899999998794,
+ 0.2487899999999854,
+ 0.24879599999997026,
+ 0.24879799999985153,
+ 0.2487979999999652,
+ 0.24880000000007385,
+ 0.24880100000007133,
+ 0.24880100000007133,
+ 0.24880300000006628,
+ 0.24880499999994754,
+ 0.24880499999994754,
+ 0.24880599999994502,
+ 0.24880800000005365,
+ 0.24880800000005365,
+ 0.24880999999993492,
+ 0.2488100000000486,
+ 0.2488109999999324,
+ 0.24881199999981618,
+ 0.2488119999999867,
+ 0.24881200000004355,
+ 0.24881200000004355,
+ 0.24881300000015472,
+ 0.24881300000015472,
+ 0.2488140000000385,
+ 0.24881699999991724,
+ 0.2488180000000284,
+ 0.24881900000002588,
+ 0.24882000000002336,
+ 0.24882100000013452,
+ 0.24882300000001578,
+ 0.248826999999892,
+ 0.24882800000000316,
+ 0.24882800000000316,
+ 0.24883299999999053,
+ 0.248833999999988,
+ 0.248833999999988,
+ 0.248833999999988,
+ 0.24883499999998548,
+ 0.24883499999998548,
+ 0.24883599999998296,
+ 0.24883699999998043,
+ 0.24883700000003728,
+ 0.2488379999999779,
+ 0.24883800000003475,
+ 0.24883999999997286,
+ 0.24884200000002465,
+ 0.2488440000000196,
+ 0.2488459999999577,
+ 0.2488459999999577,
+ 0.24884800000006635,
+ 0.24884899999995014,
+ 0.24884900000006382,
+ 0.24884900000006382,
+ 0.24884900000006382,
+ 0.24885100000005878,
+ 0.24885200000016994,
+ 0.24885299999999688,
+ 0.2488540000000512,
+ 0.24885500000004868,
+ 0.24885899999998173,
+ 0.24886500000002343,
+ 0.24886700000001838,
+ 0.2488700000000108,
+ 0.24887799999987692,
+ 0.24888299999997798,
+ 0.24888300000003483,
+ 0.24888499999997293,
+ 0.24888799999985167,
+ 0.24888799999985167,
+ 0.24888899999996283,
+ 0.24888899999996283,
+ 0.2488899999999603,
+ 0.24889099999995778,
+ 0.24889200000006895,
+ 0.24889299999995274,
+ 0.2488939999999502,
+ 0.24889600000005885,
+ 0.24890000000004875,
+ 0.24890100000004622,
+ 0.2489020000000437,
+ 0.24890300000004117,
+ 0.24890400000003865,
+ 0.2489059999999199,
+ 0.2489060000000336,
+ 0.24890700000003108,
+ 0.24891099999996413,
+ 0.24891199999979108,
+ 0.2489140000000134,
+ 0.24891500000001088,
+ 0.24891700000000583,
+ 0.24891999999999825,
+ 0.24892099999988204,
+ 0.24892099999999573,
+ 0.2489219999999932,
+ 0.2489219999999932,
+ 0.24892400000010184,
+ 0.24892499999998563,
+ 0.24892699999998058,
+ 0.24892799999997806,
+ 0.248929999999973,
+ 0.248929999999973,
+ 0.248929999999973,
+ 0.24893099999997048,
+ 0.24893300000007912,
+ 0.24893500000007407,
+ 0.24893599999995786,
+ 0.2489379999999528,
+ 0.2489379999999528,
+ 0.24893899999995028,
+ 0.24894100000005892,
+ 0.2489419999999427,
+ 0.2489419999999427,
+ 0.24894300000005387,
+ 0.24894400000005135,
+ 0.24894799999992756,
+ 0.24895200000014484,
+ 0.24895300000002862,
+ 0.24895600000002105,
+ 0.24895600000002105,
+ 0.24895700000001852,
+ 0.24895700000001852,
+ 0.248958000000016,
+ 0.248958000000016,
+ 0.2489589999998998,
+ 0.2489620000000059,
+ 0.24896499999999833,
+ 0.24896499999999833,
+ 0.24896499999999833,
+ 0.2489659999999958,
+ 0.2489659999999958,
+ 0.24896899999998823,
+ 0.24896899999998823,
+ 0.2489699999999857,
+ 0.2489740000000893,
+ 0.2489779999999655,
+ 0.2489779999999655,
+ 0.24897999999996046,
+ 0.24898099999995793,
+ 0.24898099999995793,
+ 0.24898100000001477,
+ 0.2489820000000691,
+ 0.24898500000000467,
+ 0.24898700000005647,
+ 0.24898800000005394,
+ 0.24898899999993773,
+ 0.2489900000000489,
+ 0.24899099999993268,
+ 0.24899100000016006,
+ 0.24899200000004384,
+ 0.24899200000004384,
+ 0.24899200000004384,
+ 0.24899499999992258,
+ 0.24899600000003375,
+ 0.24899699999991753,
+ 0.24899899999991248,
+ 0.24899900000002617,
+ 0.24900299999990239,
+ 0.24900300000001607,
+ 0.24900300000001607,
+ 0.24900399999989986,
+ 0.24900499999989734,
+ 0.24900500000001102,
+ 0.24900700000000597,
+ 0.24900900000000092,
+ 0.24901599999998325,
+ 0.24901599999998325,
+ 0.2490170000000944,
+ 0.24901899999997568,
+ 0.2490210000000843,
+ 0.2490210000000843,
+ 0.2490210000000843,
+ 0.249025999999958,
+ 0.24902699999995548,
+ 0.24902699999995548,
+ 0.2490309999998317,
+ 0.24903100000005907,
+ 0.24903300000005402,
+ 0.24903300000005402,
+ 0.24903600000004644,
+ 0.2490379999999277,
+ 0.24904400000002624,
+ 0.24904400000002624,
+ 0.24904800000001615,
+ 0.24904800000001615,
+ 0.24904800000012983,
+ 0.2490509999997812,
+ 0.24905100000000857,
+ 0.24905100000000857,
+ 0.24905100000000857,
+ 0.24905599999999595,
+ 0.2490579999999909,
+ 0.2490579999999909,
+ 0.24906000000009954,
+ 0.24906099999998332,
+ 0.2490619999998671,
+ 0.24906499999997322,
+ 0.24906499999997322,
+ 0.24906499999997322,
+ 0.24906499999997322,
+ 0.24906699999996817,
+ 0.24906800000007934,
+ 0.24906800000007934,
+ 0.24906899999996313,
+ 0.2490699999998469,
+ 0.2490700000000743,
+ 0.2490700000000743,
+ 0.24907200000006924,
+ 0.24907499999994798,
+ 0.24907599999994545,
+ 0.24907699999994293,
+ 0.24908099999993283,
+ 0.2490810000001602,
+ 0.24908299999992778,
+ 0.24908400000003894,
+ 0.24908400000003894,
+ 0.24908799999991516,
+ 0.24908900000002632,
+ 0.24908900000002632,
+ 0.24908999999979642,
+ 0.24909299999995937,
+ 0.24909300000001622,
+ 0.24909500000001117,
+ 0.2490980000000036,
+ 0.2490980000000036,
+ 0.24909999999999854,
+ 0.2491019999999935,
+ 0.24910299999987728,
+ 0.24910499999987223,
+ 0.24910499999987223,
+ 0.24910500000004276,
+ 0.24910600000004024,
+ 0.24910899999986214,
+ 0.2491090000000895,
+ 0.24911099999997077,
+ 0.24911299999996572,
+ 0.24911299999996572,
+ 0.2491139999999632,
+ 0.24911500000007436,
+ 0.24911699999995562,
+ 0.24911700000001247,
+ 0.2491179999999531,
+ 0.24912000000017542,
+ 0.24912200000017037,
+ 0.24912200000017037,
+ 0.24912499999993543,
+ 0.2491260000000466,
+ 0.24912799999992785,
+ 0.24913199999991775,
+ 0.24913500000002387,
+ 0.24913600000013503,
+ 0.2491379999999026,
+ 0.2491380000000163,
+ 0.24913900000001377,
+ 0.24914000000001124,
+ 0.24914100000000872,
+ 0.24914400000000114,
+ 0.24914499999999862,
+ 0.2491459999999961,
+ 0.24914799999999104,
+ 0.24914799999999104,
+ 0.24914899999998852,
+ 0.24914899999998852,
+ 0.249149999999986,
+ 0.24915199999986726,
+ 0.24915199999998094,
+ 0.24915299999997842,
+ 0.24915299999997842,
+ 0.24915299999997842,
+ 0.24915400000008958,
+ 0.24915600000008453,
+ 0.24915699999996832,
+ 0.2491570000001957,
+ 0.24915800000007948,
+ 0.24915800000007948,
+ 0.24915899999996327,
+ 0.24916300000006686,
+ 0.24916399999995065,
+ 0.2491650000001755,
+ 0.24916600000005928,
+ 0.24916600000005928,
+ 0.24916699999999992,
+ 0.24916700000005676,
+ 0.24916700000005676,
+ 0.24916799999994055,
+ 0.24916800000005423,
+ 0.2491699999999355,
+ 0.2491699999999355,
+ 0.24916999999999234,
+ 0.24917099999993297,
+ 0.24917100000004666,
+ 0.24917100000004666,
+ 0.24917200000004414,
+ 0.2491739999998117,
+ 0.24917600000003404,
+ 0.24917600000003404,
+ 0.24917600000003404,
+ 0.249178000000029,
+ 0.24917900000014015,
+ 0.24917900000014015,
+ 0.24918000000002394,
+ 0.24918099999990773,
+ 0.24918300000001636,
+ 0.24918499999995447,
+ 0.2491890000001149,
+ 0.2491939999999886,
+ 0.24919499999998607,
+ 0.24919500000009975,
+ 0.24919599999998354,
+ 0.2491970000000947,
+ 0.24919800000009218,
+ 0.24919999999997344,
+ 0.24919999999997344,
+ 0.24920399999996334,
+ 0.2492050000000745,
+ 0.2492070000000126,
+ 0.24920700000006946,
+ 0.24920799999995324,
+ 0.2492080000000101,
+ 0.24921000000006188,
+ 0.24921299999999746,
+ 0.2492130000000543,
+ 0.24921499999993557,
+ 0.24921500000004926,
+ 0.24921500000004926,
+ 0.24921600000016042,
+ 0.24921899999998232,
+ 0.24921900000003916,
+ 0.24922099999992042,
+ 0.2492219999999179,
+ 0.24922200000014527,
+ 0.24922400000002654,
+ 0.249225000000024,
+ 0.24922700000001896,
+ 0.24922700000001896,
+ 0.2492290000000139,
+ 0.2492290000000139,
+ 0.2492290000000139,
+ 0.2492330000000038,
+ 0.2492330000000038,
+ 0.2492339999998876,
+ 0.2492340000000013,
+ 0.24923599999988255,
+ 0.24923599999999624,
+ 0.24923899999998866,
+ 0.24923899999998866,
+ 0.24924099999998361,
+ 0.24924399999986235,
+ 0.24925000000007458,
+ 0.24925199999995584,
+ 0.24925200000006953,
+ 0.24925200000006953,
+ 0.24925599999983206,
+ 0.24925600000005943,
+ 0.2492579999999407,
+ 0.24925899999993817,
+ 0.24925900000005186,
+ 0.24925999999993564,
+ 0.2492599999999925,
+ 0.24926000000004933,
+ 0.24926099999993312,
+ 0.24926099999993312,
+ 0.24926300000004176,
+ 0.24926399999992555,
+ 0.2492650000000367,
+ 0.24926600000003418,
+ 0.24926700000003166,
+ 0.24926700000014534,
+ 0.24926799999991545,
+ 0.24926800000002913,
+ 0.2492690000000266,
+ 0.24927099999990787,
+ 0.2492739999999003,
+ 0.2492770000000064,
+ 0.2492770000000064,
+ 0.24927800000000389,
+ 0.24927800000000389,
+ 0.24927900000000136,
+ 0.24927900000000136,
+ 0.24927900000011505,
+ 0.24927900000011505,
+ 0.24927999999999884,
+ 0.24928299999999126,
+ 0.24928399999998874,
+ 0.24928799999997864,
+ 0.24929100000008475,
+ 0.24929199999996854,
+ 0.24929199999996854,
+ 0.2492930000000797,
+ 0.24929600000007213,
+ 0.2492979999999534,
+ 0.2492979999999534,
+ 0.24930000000006203,
+ 0.24930400000005193,
+ 0.2493059999999332,
+ 0.24930599999999004,
+ 0.24930700000004435,
+ 0.24930899999992562,
+ 0.24931000000003678,
+ 0.24931099999992057,
+ 0.24931100000003426,
+ 0.24931199999991804,
+ 0.24931199999991804,
+ 0.249313999999913,
+ 0.24931400000002668,
+ 0.2493149999999673,
+ 0.24931500000002416,
+ 0.24931600000002163,
+ 0.24931600000002163,
+ 0.24931900000001406,
+ 0.24931999999989785,
+ 0.24932400000000143,
+ 0.24932400000000143,
+ 0.2493249999999989,
+ 0.24932599999999638,
+ 0.24932599999999638,
+ 0.24932699999999386,
+ 0.24932699999999386,
+ 0.2493289999999888,
+ 0.24932999999998628,
+ 0.24933099999998376,
+ 0.24933399999997619,
+ 0.2493369999999686,
+ 0.24933700000002545,
+ 0.2493379999998524,
+ 0.2493390000000204,
+ 0.24933900000019094,
+ 0.2493409999999585,
+ 0.2493419999998423,
+ 0.24934200000006967,
+ 0.2493430000000103,
+ 0.24934399999995094,
+ 0.2493459999998322,
+ 0.24934600000005958,
+ 0.24934700000005705,
+ 0.249349000000052,
+ 0.24935199999998758,
+ 0.24935200000004443,
+ 0.24935400000003938,
+ 0.24935500000015054,
+ 0.24935600000003433,
+ 0.2493570000001455,
+ 0.24935799999997244,
+ 0.24936000000002423,
+ 0.24936000000002423,
+ 0.24936299999990297,
+ 0.24936299999990297,
+ 0.24936300000001665,
+ 0.24936400000001413,
+ 0.24936600000000908,
+ 0.24936600000000908,
+ 0.24936700000000656,
+ 0.24936700000000656,
+ 0.24936700000000656,
+ 0.2493690000000015,
+ 0.24936999999999898,
+ 0.24937099999999646,
+ 0.24937100000011014,
+ 0.24937199999999393,
+ 0.24937399999998888,
+ 0.24937499999987267,
+ 0.24937899999986257,
+ 0.2493810000000849,
+ 0.2493810000000849,
+ 0.24938399999996363,
+ 0.24938399999996363,
+ 0.24938599999995859,
+ 0.24938799999995354,
+ 0.24939199999994344,
+ 0.2493920000001708,
+ 0.24939400000005207,
+ 0.24939500000004955,
+ 0.24939599999993334,
+ 0.2493979999999283,
+ 0.2493979999999283,
+ 0.24939800000004197,
+ 0.24939900000003945,
+ 0.24939900000003945,
+ 0.24939900000003945,
+ 0.2494019999999182,
+ 0.24940200000003188,
+ 0.24940400000002683,
+ 0.24940700000001925,
+ 0.24941000000012536,
+ 0.24941100000000915,
+ 0.24941100000000915,
+ 0.2494130000000041,
+ 0.24941499999999905,
+ 0.24941599999999653,
+ 0.24941599999999653,
+ 0.24941799999999148,
+ 0.24941799999999148,
+ 0.24941999999998643,
+ 0.24942000000010012,
+ 0.24942200000009507,
+ 0.24942399999997633,
+ 0.24942400000009002,
+ 0.24942600000008497,
+ 0.24942600000008497,
+ 0.24942799999996623,
+ 0.24942799999996623,
+ 0.2494329999999536,
+ 0.24943400000006477,
+ 0.24943799999994098,
+ 0.24943800000005467,
+ 0.24943800000005467,
+ 0.24943899999993846,
+ 0.2494410000000471,
+ 0.24944100000016078,
+ 0.24944100000016078,
+ 0.24944299999992836,
+ 0.2494449999999233,
+ 0.249445000000037,
+ 0.249445000000037,
+ 0.2494490000000269,
+ 0.2494499999999107,
+ 0.2494499999999107,
+ 0.24945000000002437,
+ 0.24945400000001428,
+ 0.24945499999989806,
+ 0.24945500000001175,
+ 0.24945699999989301,
+ 0.24945800000000418,
+ 0.24945800000000418,
+ 0.24945800000000418,
+ 0.24945800000000418,
+ 0.24945900000000165,
+ 0.24945900000000165,
+ 0.24945900000000165,
+ 0.2494609999999966,
+ 0.24946199999999408,
+ 0.24946299999999155,
+ 0.2494650000001002,
+ 0.24946700000009514,
+ 0.2494689999999764,
+ 0.24947000000003072,
+ 0.24947199999996883,
+ 0.24947800000001052,
+ 0.24947999999994863,
+ 0.24947999999994863,
+ 0.2494809999999461,
+ 0.24948199999994358,
+ 0.24948299999982737,
+ 0.24948700000004465,
+ 0.2494890000000396,
+ 0.24948999999992338,
+ 0.24948999999992338,
+ 0.24948999999998023,
+ 0.24949199999991833,
+ 0.2494920000001457,
+ 0.2494930000000295,
+ 0.24949400000002697,
+ 0.24949400000002697,
+ 0.24949500000002445,
+ 0.24949500000002445,
+ 0.24949500000002445,
+ 0.24949599999990824,
+ 0.24949600000002192,
+ 0.24949799999996003,
+ 0.24949999999989814,
+ 0.24950000000001182,
+ 0.2495010000000093,
+ 0.24950300000000425,
+ 0.24950599999999667,
+ 0.24950599999999667,
+ 0.24950599999999667,
+ 0.24950699999999415,
+ 0.24950699999999415,
+ 0.24950900000004594,
+ 0.24951099999998405,
+ 0.24951199999998153,
+ 0.249512999999979,
+ 0.249512999999979,
+ 0.249512999999979,
+ 0.24951300000020638,
+ 0.24951499999997395,
+ 0.24951799999996638,
+ 0.24951800000008006,
+ 0.24951999999996133,
+ 0.24952400000000807,
+ 0.2495249999999487,
+ 0.2495249999999487,
+ 0.24952500000017608,
+ 0.24952600000005987,
+ 0.24952699999994365,
+ 0.24952700000005734,
+ 0.24952800000005482,
+ 0.2495289999999386,
+ 0.24953000000004977,
+ 0.24953099999993356,
+ 0.24953100000016093,
+ 0.24953200000004472,
+ 0.24953200000004472,
+ 0.24953400000003967,
+ 0.24953600000003462,
+ 0.2495369999999184,
+ 0.2495409999999083,
+ 0.2495419999997921,
+ 0.24954299999990326,
+ 0.24954400000001442,
+ 0.24954700000012053,
+ 0.24954800000000432,
+ 0.2495490000000018,
+ 0.24954999999999927,
+ 0.24955099999988306,
+ 0.24955099999999675,
+ 0.24955199999999422,
+ 0.24955500000010034,
+ 0.24955599999998412,
+ 0.24955700000003844,
+ 0.24956199999996898,
+ 0.24956300000008014,
+ 0.24956300000008014,
+ 0.24956399999996393,
+ 0.2495640000000776,
+ 0.2495640000001913,
+ 0.2495649999999614,
+ 0.24956599999995888,
+ 0.24956799999995383,
+ 0.2495689999999513,
+ 0.249569000000065,
+ 0.24957099999994625,
+ 0.24957100000005994,
+ 0.2495720000001711,
+ 0.24957500000004984,
+ 0.24957599999993363,
+ 0.24957699999998795,
+ 0.249580999999921,
+ 0.249580999999921,
+ 0.2495810000000347,
+ 0.2495810000000347,
+ 0.24958200000014585,
+ 0.24958400000002712,
+ 0.2495840000001408,
+ 0.24958600000002207,
+ 0.24958799999990333,
+ 0.24959200000000692,
+ 0.24959200000000692,
+ 0.2495930000000044,
+ 0.24959499999999935,
+ 0.2495969999999943,
+ 0.24960199999986799,
+ 0.24960299999997915,
+ 0.24960300000009283,
+ 0.2496049999999741,
+ 0.24960599999997157,
+ 0.24960599999997157,
+ 0.24960599999997157,
+ 0.24960599999997157,
+ 0.24960799999996652,
+ 0.2496080000000802,
+ 0.24961099999995895,
+ 0.24961200000001327,
+ 0.24961200000001327,
+ 0.2496120000000701,
+ 0.24961799999999812,
+ 0.24961899999993875,
+ 0.24962600000003476,
+ 0.24962699999991855,
+ 0.2496269999999754,
+ 0.24962800000002972,
+ 0.2496289999999135,
+ 0.24963199999979224,
+ 0.24963499999989835,
+ 0.249637000000007,
+ 0.24963800000000447,
+ 0.24963800000000447,
+ 0.24963800000000447,
+ 0.24963900000000194,
+ 0.24964100000011058,
+ 0.24964199999999437,
+ 0.24964399999998932,
+ 0.24964399999998932,
+ 0.24964599999998427,
+ 0.24964699999986806,
+ 0.24964699999998174,
+ 0.24964699999998174,
+ 0.24965199999996912,
+ 0.2496529999998529,
+ 0.2496529999999666,
+ 0.24965400000007776,
+ 0.24965599999995902,
+ 0.24965999999994892,
+ 0.24966199999994387,
+ 0.2496629999999982,
+ 0.24966500000004999,
+ 0.24966600000004746,
+ 0.24966700000004494,
+ 0.24966799999992872,
+ 0.2496680000000424,
+ 0.2496680000000424,
+ 0.24966899999998304,
+ 0.2496690000000399,
+ 0.24966999999998052,
+ 0.24966999999998052,
+ 0.2496730000000298,
+ 0.24967399999991358,
+ 0.24967400000002726,
+ 0.24967500000002474,
+ 0.2496760000001359,
+ 0.24967900000001464,
+ 0.24968099999995275,
+ 0.24968200000000706,
+ 0.2496829999999477,
+ 0.24968400000000202,
+ 0.2496840000001157,
+ 0.2496849999999995,
+ 0.2496849999999995,
+ 0.2496849999999995,
+ 0.2496889999999894,
+ 0.2496889999999894,
+ 0.24969000000010055,
+ 0.24969099999998434,
+ 0.24969199999998182,
+ 0.24969199999998182,
+ 0.24969200000003866,
+ 0.2496929999999793,
+ 0.24969300000009298,
+ 0.2496940000000336,
+ 0.2496969999999692,
+ 0.24969899999996414,
+ 0.24969899999996414,
+ 0.24969999999984793,
+ 0.24970000000001846,
+ 0.2497009999999591,
+ 0.2497009999999591,
+ 0.24970199999995657,
+ 0.24970299999995405,
+ 0.2497040000000652,
+ 0.2497040000000652,
+ 0.24970500000006268,
+ 0.24970600000006016,
+ 0.2497070000000008,
+ 0.24970900000005258,
+ 0.24970900000005258,
+ 0.24970900000016627,
+ 0.24971099999993385,
+ 0.249712000000045,
+ 0.24971399999998312,
+ 0.24971399999998312,
+ 0.24971400000003996,
+ 0.24971500000003743,
+ 0.24971899999991365,
+ 0.24971999999991112,
+ 0.24972299999990355,
+ 0.2497240000000147,
+ 0.24972700000000714,
+ 0.2497280000000046,
+ 0.2497290000000021,
+ 0.24973099999988335,
+ 0.24973399999998946,
+ 0.24974100000008548,
+ 0.24974300000008043,
+ 0.24974399999996422,
+ 0.24974399999996422,
+ 0.24974399999996422,
+ 0.24974799999995412,
+ 0.24974999999994907,
+ 0.2497529999999415,
+ 0.24975300000005518,
+ 0.24975499999993644,
+ 0.24975500000005013,
+ 0.24975599999993392,
+ 0.24975599999993392,
+ 0.2497560000000476,
+ 0.24975800000004256,
+ 0.24976100000003498,
+ 0.24976100000003498,
+ 0.24976300000002993,
+ 0.24976300000002993,
+ 0.24976300000002993,
+ 0.24976600000002236,
+ 0.2497680000000173,
+ 0.2497689999997874,
+ 0.24976900000001478,
+ 0.24977300000000469,
+ 0.24977300000000469,
+ 0.24977499999999964,
+ 0.2497759999999971,
+ 0.2497759999999971,
+ 0.2497760000001108,
+ 0.24977799999999206,
+ 0.24977800000010575,
+ 0.2497840000000906,
+ 0.2497840000000906,
+ 0.24978599999997186,
+ 0.24978599999997186,
+ 0.24978699999996934,
+ 0.24978999999984808,
+ 0.24979000000007545,
+ 0.2497920000000704,
+ 0.24979499999994914,
+ 0.2497969999999441,
+ 0.2497969999999441,
+ 0.24979800000005525,
+ 0.2498000000000502,
+ 0.24980200000004515,
+ 0.24980399999992642,
+ 0.24980699999991884,
+ 0.24980699999991884,
+ 0.24980700000003253,
+ 0.24980900000002748,
+ 0.24981300000001738,
+ 0.24981400000001486,
+ 0.24981400000001486,
+ 0.2498160000000098,
+ 0.24981700000000728,
+ 0.24981800000000476,
+ 0.24981800000000476,
+ 0.24981900000000223,
+ 0.2498199999999997,
+ 0.2498199999999997,
+ 0.2498209999998835,
+ 0.24982199999999466,
+ 0.24982299999987845,
+ 0.2498239999999896,
+ 0.24982699999998204,
+ 0.24982700000009572,
+ 0.2498279999999795,
+ 0.2498279999999795,
+ 0.24982900000009067,
+ 0.24982999999997446,
+ 0.24983099999997194,
+ 0.24983500000007552,
+ 0.24983500000007552,
+ 0.2498380000000111,
+ 0.24984100000006038,
+ 0.24984199999994416,
+ 0.249842000000001,
+ 0.24984300000005533,
+ 0.2498449999999366,
+ 0.24984699999981785,
+ 0.24984700000004523,
+ 0.2498480000000427,
+ 0.24984900000004018,
+ 0.24984900000004018,
+ 0.24985000000003765,
+ 0.24985400000002755,
+ 0.24985400000014124,
+ 0.24985800000001746,
+ 0.24985900000001493,
+ 0.2498600000000124,
+ 0.2498600000000124,
+ 0.24986100000000988,
+ 0.24986200000000736,
+ 0.24986200000012104,
+ 0.24986300000000483,
+ 0.24986599999988357,
+ 0.24986599999999726,
+ 0.24986699999999473,
+ 0.24986799999987852,
+ 0.24986899999998968,
+ 0.24986899999998968,
+ 0.24986999999987347,
+ 0.24986999999998716,
+ 0.24987099999998463,
+ 0.24987299999997958,
+ 0.24987299999997958,
+ 0.24987299999997958,
+ 0.24987499999997453,
+ 0.24987700000008317,
+ 0.24987800000008065,
+ 0.2498790000001918,
+ 0.24988199999995686,
+ 0.24988299999995434,
+ 0.2498839999999518,
+ 0.2498840000000655,
+ 0.2498849999999493,
+ 0.24988600000006045,
+ 0.24988600000006045,
+ 0.24988600000006045,
+ 0.2498879999999417,
+ 0.24989000000005035,
+ 0.2498929999999291,
+ 0.24989300000004278,
+ 0.24989400000004025,
+ 0.24989700000003268,
+ 0.24989800000003015,
+ 0.24989800000003015,
+ 0.24989800000003015,
+ 0.24989899999991394,
+ 0.2499000000000251,
+ 0.24990100000002258,
+ 0.24990300000001753,
+ 0.249904000000015,
+ 0.24990500000012617,
+ 0.2499080000000049,
+ 0.2499089999998887,
+ 0.24990900000000238,
+ 0.24990900000000238,
+ 0.24990999999999985,
+ 0.2499119999999948,
+ 0.2499119999999948,
+ 0.2499159999999847,
+ 0.24991799999997966,
+ 0.24991899999997713,
+ 0.24991900000009082,
+ 0.24992099999997208,
+ 0.24992099999997208,
+ 0.24992100000008577,
+ 0.24992299999985335,
+ 0.24992299999985335,
+ 0.24992499999996198,
+ 0.24992500000007567,
+ 0.24992599999995946,
+ 0.24992699999984325,
+ 0.24992900000006557,
+ 0.24992900000006557,
+ 0.24992999999994936,
+ 0.24993099999994683,
+ 0.2499359999999342,
+ 0.2499360000000479,
+ 0.24993699999993169,
+ 0.24993700000004537,
+ 0.24993800000004285,
+ 0.2499399999999241,
+ 0.2499399999999241,
+ 0.24994100000003527,
+ 0.24994100000003527,
+ 0.24994300000003022,
+ 0.24994300000003022,
+ 0.2499440000000277,
+ 0.24994599999990896,
+ 0.24994599999990896,
+ 0.24994600000002265,
+ 0.24994600000002265,
+ 0.24994600000013634,
+ 0.24994699999990644,
+ 0.24994999999989886,
+ 0.24995100000001003,
+ 0.24995499999999993,
+ 0.24995499999999993,
+ 0.2499559999999974,
+ 0.2499599999999873,
+ 0.2499599999999873,
+ 0.24996099999998478,
+ 0.24996099999998478,
+ 0.24996299999997973,
+ 0.24996400000003405,
+ 0.24996799999985342,
+ 0.24996899999996458,
+ 0.24996899999996458,
+ 0.24997100000007322,
+ 0.249971999999957,
+ 0.24997300000006817,
+ 0.24997400000006564,
+ 0.2499760000000606,
+ 0.2499760000000606,
+ 0.24998100000004797,
+ 0.24998200000004545,
+ 0.24998299999992923,
+ 0.2499840000000404,
+ 0.2499840000000404,
+ 0.2499859999999785,
+ 0.24998600000003535,
+ 0.24998600000003535,
+ 0.24998900000002777,
+ 0.24999400000001515,
+ 0.24999599999995326,
+ 0.24999700000000757,
+ 0.24999700000012126,
+ 0.24999800000000505,
+ 0.24999800000000505,
+ 0.25,
+ 0.2500009999999975,
+ 0.2500079999999798,
+ 0.25001499999996213,
+ 0.2500160000000733,
+ 0.25001700000007077,
+ 0.25001899999995203,
+ 0.2500239999999394,
+ 0.2500240000000531,
+ 0.2500249999999369,
+ 0.2500270000000455,
+ 0.250028000000043,
+ 0.25002900000004047,
+ 0.25002900000004047,
+ 0.2500319999999192,
+ 0.25003300000003037,
+ 0.25003400000002785,
+ 0.25003400000002785,
+ 0.25003499999991163,
+ 0.2500360000001365,
+ 0.25003700000002027,
+ 0.25003700000002027,
+ 0.25003700000002027,
+ 0.2500390000000152,
+ 0.25004100000001017,
+ 0.25004200000000765,
+ 0.2500430000000051,
+ 0.2500440000000026,
+ 0.2500450000000001,
+ 0.25004600000011123,
+ 0.2500519999999824,
+ 0.2500529999999799,
+ 0.25005399999997735,
+ 0.2500549999999748,
+ 0.2500569999999698,
+ 0.25005799999996725,
+ 0.2500589999999647,
+ 0.2500599999998485,
+ 0.25006200000007084,
+ 0.2500649999999496,
+ 0.25006600000006074,
+ 0.25006600000006074,
+ 0.25006900000005317,
+ 0.25007199999998875,
+ 0.25007399999992685,
+ 0.25007399999992685,
+ 0.25007499999992433,
+ 0.2500750000001517,
+ 0.2500759999999218,
+ 0.2500760000000355,
+ 0.25007899999991423,
+ 0.2500790000000279,
+ 0.2500790000001416,
+ 0.2500800000000254,
+ 0.2500800000000254,
+ 0.2500800000000254,
+ 0.25008699999989403,
+ 0.25008900000000267,
+ 0.25009000000000015,
+ 0.2500909999999976,
+ 0.25009299999999257,
+ 0.25009399999999005,
+ 0.25009499999987383,
+ 0.2500949999999875,
+ 0.250095999999985,
+ 0.25009699999998247,
+ 0.25009700000009616,
+ 0.25009799999997995,
+ 0.2500999999999749,
+ 0.2501009999999724,
+ 0.25010199999996985,
+ 0.2501029999999673,
+ 0.2501039999999648,
+ 0.2501039999999648,
+ 0.2501049999999623,
+ 0.25010599999995975,
+ 0.2501069999999572,
+ 0.2501079999999547,
+ 0.2501080000001821,
+ 0.25010999999994965,
+ 0.2501119999999446,
+ 0.25011200000000144,
+ 0.2501120000000583,
+ 0.25011399999993955,
+ 0.25011399999993955,
+ 0.2501150000000507,
+ 0.25011700000004566,
+ 0.2501189999999269,
+ 0.2501190000000406,
+ 0.2501190000000406,
+ 0.2501190000000406,
+ 0.25012199999991935,
+ 0.25012199999991935,
+ 0.25012200000003304,
+ 0.2501239999999143,
+ 0.250124000000028,
+ 0.25012699999979304,
+ 0.25012699999990673,
+ 0.25013000000001284,
+ 0.25013300000000527,
+ 0.2501350000000002,
+ 0.25013799999999264,
+ 0.25014100000009876,
+ 0.25014499999997497,
+ 0.25014599999997245,
+ 0.25014599999997245,
+ 0.2501460000000293,
+ 0.25014600000008613,
+ 0.25014899999996487,
+ 0.25014899999996487,
+ 0.25014899999996487,
+ 0.2501519999998436,
+ 0.250152000000071,
+ 0.2501529999999548,
+ 0.2501529999999548,
+ 0.2501559999998335,
+ 0.25015800000005584,
+ 0.2501589999999396,
+ 0.2501589999999396,
+ 0.2501590000000533,
+ 0.2501609999999914,
+ 0.25016100000004826,
+ 0.25016600000003564,
+ 0.2501670000001468,
+ 0.2501679999999169,
+ 0.2501680000000306,
+ 0.25016900000002806,
+ 0.25017000000002554,
+ 0.25017000000002554,
+ 0.2501720000000205,
+ 0.25017400000001544,
+ 0.2501750000000129,
+ 0.25017800000000534,
+ 0.2501790000000028,
+ 0.2501790000000028,
+ 0.2501790000000028,
+ 0.2501829999999927,
+ 0.25018499999998767,
+ 0.25018599999998514,
+ 0.2501879999999801,
+ 0.2501900000002024,
+ 0.25019699999995737,
+ 0.25020099999994727,
+ 0.25020199999994475,
+ 0.2502029999999422,
+ 0.25020400000016707,
+ 0.2502059999999915,
+ 0.2502069999999321,
+ 0.2502079999999296,
+ 0.2502079999999296,
+ 0.2502079999999296,
+ 0.2502089999999271,
+ 0.2502120000000332,
+ 0.25021300000003066,
+ 0.2502149999999119,
+ 0.2502150000000256,
+ 0.2502150000000256,
+ 0.25021800000001804,
+ 0.250220000000013,
+ 0.2502230000000054,
+ 0.2502240000000029,
+ 0.2502280000001065,
+ 0.25022999999998774,
+ 0.2502309999999852,
+ 0.2502319999999827,
+ 0.2502439999999524,
+ 0.2502440000000661,
+ 0.25024599999983366,
+ 0.25024600000006103,
+ 0.250248000000056,
+ 0.2502499999999941,
+ 0.2502509999999347,
+ 0.2502510000000484,
+ 0.2502560000000358,
+ 0.25025699999991957,
+ 0.25025699999991957,
+ 0.2502590000000282,
+ 0.25026900000000296,
+ 0.25026900000011665,
+ 0.2502709999998842,
+ 0.2502709999999979,
+ 0.2502719999999954,
+ 0.2502720000001091,
+ 0.2502729999998792,
+ 0.25027299999999286,
+ 0.25027799999998024,
+ 0.2502790000000914,
+ 0.2502830000000813,
+ 0.25028599999996004,
+ 0.2502860000000737,
+ 0.25028700000001436,
+ 0.2502870000000712,
+ 0.250287999999955,
+ 0.2502880000000687,
+ 0.2502889999998388,
+ 0.25029300000005605,
+ 0.2502940000001672,
+ 0.2502969999998186,
+ 0.25029799999992974,
+ 0.25029800000004343,
+ 0.25030100000003586,
+ 0.25030100000003586,
+ 0.2503039999999146,
+ 0.25030500000002576,
+ 0.25030500000002576,
+ 0.25030600000002323,
+ 0.25030900000001566,
+ 0.25030900000001566,
+ 0.25030999999989945,
+ 0.2503109999998969,
+ 0.25031400000000303,
+ 0.2503199999999879,
+ 0.2503200000001016,
+ 0.25032099999998536,
+ 0.2503220000000965,
+ 0.25032599999997274,
+ 0.2503269999999702,
+ 0.25032899999996516,
+ 0.25033200000001443,
+ 0.2503320000000713,
+ 0.2503320000000713,
+ 0.25033699999994496,
+ 0.250342000000046,
+ 0.2503439999999273,
+ 0.25034599999992224,
+ 0.25035000000002583,
+ 0.2503520000000208,
+ 0.2503520000000208,
+ 0.25035700000000816,
+ 0.25035800000000563,
+ 0.2503590000000031,
+ 0.2503630000001067,
+ 0.25036499999987427,
+ 0.25036499999998796,
+ 0.25036599999998543,
+ 0.2503660000000991,
+ 0.2503669999999829,
+ 0.2503679999999804,
+ 0.2503679999999804,
+ 0.25036999999997533,
+ 0.2503709999998591,
+ 0.2503719999999703,
+ 0.25037399999996524,
+ 0.25037399999996524,
+ 0.250374999999849,
+ 0.2503750000000764,
+ 0.250378000000012,
+ 0.2503829999999425,
+ 0.2503830000000562,
+ 0.2503860000000486,
+ 0.2503880000000436,
+ 0.25038900000004105,
+ 0.2503920000000335,
+ 0.25039200000014716,
+ 0.25039300000003095,
+ 0.25039300000003095,
+ 0.25039399999991474,
+ 0.2503940000001421,
+ 0.2503990000000158,
+ 0.25040199999989454,
+ 0.25040500000000065,
+ 0.25040599999999813,
+ 0.2504079999999931,
+ 0.2504109999999855,
+ 0.2504109999999855,
+ 0.2504109999999855,
+ 0.2504119999998693,
+ 0.250411999999983,
+ 0.25041299999998046,
+ 0.25041299999998046,
+ 0.25041799999996783,
+ 0.25042099999996026,
+ 0.2504229999999552,
+ 0.2504239999999527,
+ 0.25042499999995016,
+ 0.25042500000006385,
+ 0.2504260000000613,
+ 0.25042899999994006,
+ 0.25042900000016743,
+ 0.250430999999935,
+ 0.2504320000000462,
+ 0.25043399999992744,
+ 0.2504339999999843,
+ 0.2504340000000411,
+ 0.250438000000031,
+ 0.250438000000031,
+ 0.2504440000000159,
+ 0.2504440000000159,
+ 0.2504460000000108,
+ 0.2504470000000083,
+ 0.2504480000000058,
+ 0.2504500000000007,
+ 0.2504519999999957,
+ 0.2504550000001018,
+ 0.25045700000009674,
+ 0.2504589999998643,
+ 0.250458999999978,
+ 0.25046599999996033,
+ 0.2504679999999553,
+ 0.2504679999999553,
+ 0.25047300000005635,
+ 0.2504750000000513,
+ 0.2504759999999351,
+ 0.25047600000004877,
+ 0.25047799999993003,
+ 0.2504789999998138,
+ 0.25048100000003615,
+ 0.2504820000000336,
+ 0.2504840000000286,
+ 0.25048500000002605,
+ 0.250487000000021,
+ 0.2504880000000185,
+ 0.25048900000001595,
+ 0.2504900000000134,
+ 0.2504910000000109,
+ 0.25049300000000585,
+ 0.25049699999999575,
+ 0.2504989999999907,
+ 0.25050099999998565,
+ 0.25050099999998565,
+ 0.2505019999999831,
+ 0.2505069999999705,
+ 0.250507999999968,
+ 0.25050800000008167,
+ 0.25050899999996545,
+ 0.25051399999995283,
+ 0.25051699999994526,
+ 0.2505190000000539,
+ 0.25052000000005137,
+ 0.2505229999999301,
+ 0.2505229999999301,
+ 0.25052900000002865,
+ 0.2505309999999099,
+ 0.25053200000002107,
+ 0.25053200000002107,
+ 0.25053200000002107,
+ 0.25053700000000845,
+ 0.2505419999999958,
+ 0.2505429999999933,
+ 0.250543000000107,
+ 0.2505479999999807,
+ 0.2505479999999807,
+ 0.2505479999999807,
+ 0.2505509999999731,
+ 0.2505539999999655,
+ 0.2505559999999605,
+ 0.2505589999999529,
+ 0.25056400000005397,
+ 0.2505679999999302,
+ 0.25056899999992766,
+ 0.25056900000004134,
+ 0.2505710000000363,
+ 0.25057599999991,
+ 0.25057700000002114,
+ 0.25058500000000095,
+ 0.25058599999988473,
+ 0.25058899999999085,
+ 0.25058899999999085,
+ 0.2505919999999833,
+ 0.2505939999999782,
+ 0.2505949999999757,
+ 0.2506029999999555,
+ 0.2506030000000692,
+ 0.2506070000000591,
+ 0.25060800000005656,
+ 0.25060899999994035,
+ 0.250611000000049,
+ 0.25061600000003637,
+ 0.25062099999991005,
+ 0.2506260000000111,
+ 0.2506270000000086,
+ 0.25062800000000607,
+ 0.25062800000000607,
+ 0.25062900000000354,
+ 0.25062900000011723,
+ 0.2506309999998848,
+ 0.25063199999999597,
+ 0.2506349999999884,
+ 0.25063999999997577,
+ 0.25064099999997325,
+ 0.25064399999996567,
+ 0.25064399999996567,
+ 0.25064899999995305,
+ 0.25064900000006674,
+ 0.2506510000000617,
+ 0.2506539999999404,
+ 0.2506569999999897,
+ 0.2506579999999303,
+ 0.2506599999999253,
+ 0.2506599999999253,
+ 0.2506599999999253,
+ 0.2506620000000339,
+ 0.2506639999999152,
+ 0.250663999999972,
+ 0.25066400000002886,
+ 0.25066400000014255,
+ 0.25066999999990003,
+ 0.25066999999995687,
+ 0.2506700000000137,
+ 0.25067300000000614,
+ 0.2506740000000036,
+ 0.25067699999999604,
+ 0.2506779999999935,
+ 0.2506780000001072,
+ 0.250678999999991,
+ 0.250678999999991,
+ 0.2506819999999834,
+ 0.2506839999998647,
+ 0.2506869999999708,
+ 0.25068900000007943,
+ 0.25069399999983943,
+ 0.2506949999999506,
+ 0.25069699999994555,
+ 0.2506999999999948,
+ 0.25070000000005166,
+ 0.2507019999999329,
+ 0.2507020000000466,
+ 0.2507039999999279,
+ 0.25070499999992535,
+ 0.25070899999991525,
+ 0.25071299999990515,
+ 0.2507150000001275,
+ 0.25071600000001126,
+ 0.25071600000001126,
+ 0.25071700000000874,
+ 0.25072099999988495,
+ 0.25072099999988495,
+ 0.2507229999999936,
+ 0.25072399999999107,
+ 0.250725999999986,
+ 0.250725999999986,
+ 0.2507269999999835,
+ 0.25072700000004033,
+ 0.25073300000008203,
+ 0.2507349999999633,
+ 0.250735000000077,
+ 0.25073699999984456,
+ 0.25073699999995824,
+ 0.2507389999999532,
+ 0.25074000000006436,
+ 0.250741000000005,
+ 0.25074500000005173,
+ 0.2507459999999355,
+ 0.2507459999999355,
+ 0.2507459999999355,
+ 0.25074799999993047,
+ 0.25074900000004163,
+ 0.2507500000000391,
+ 0.25075200000014775,
+ 0.2507540000001427,
+ 0.2507549999999128,
+ 0.2507580000001326,
+ 0.2507590000000164,
+ 0.25076000000001386,
+ 0.25076100000001134,
+ 0.2507620000000088,
+ 0.25076400000000376,
+ 0.2507659999999987,
+ 0.2507739999999785,
+ 0.25077599999997346,
+ 0.2507779999999684,
+ 0.25077800000002526,
+ 0.25078099999996084,
+ 0.25078099999996084,
+ 0.25078099999996084,
+ 0.25078399999995327,
+ 0.25078700000017307,
+ 0.25078800000005685,
+ 0.2507940000000417,
+ 0.2507940000000417,
+ 0.25079699999992044,
+ 0.25080000000002656,
+ 0.2508020000000215,
+ 0.2508029999999053,
+ 0.25080299999996214,
+ 0.25080400000001646,
+ 0.2508060000000114,
+ 0.2508070000000089,
+ 0.25081199999999626,
+ 0.25081299999988005,
+ 0.2508139999999912,
+ 0.2508139999999912,
+ 0.250814999999875,
+ 0.2508189999999786,
+ 0.25082099999985985,
+ 0.25082499999996344,
+ 0.2508250000000771,
+ 0.2508259999999609,
+ 0.25082700000001523,
+ 0.2508339999999407,
+ 0.25083699999999,
+ 0.2508379999999306,
+ 0.2508380000000443,
+ 0.2508380000000443,
+ 0.25083899999998494,
+ 0.25084799999990537,
+ 0.25084900000001653,
+ 0.25084900000001653,
+ 0.2508540000000039,
+ 0.25085600000011254,
+ 0.25085699999999633,
+ 0.2508619999999837,
+ 0.2508629999999812,
+ 0.25086799999996856,
+ 0.25086800000008225,
+ 0.25087200000007215,
+ 0.2508779999999433,
+ 0.2508789999999408,
+ 0.25088300000015806,
+ 0.25088400000004185,
+ 0.25088400000004185,
+ 0.25088499999992564,
+ 0.25088499999992564,
+ 0.2508869999999206,
+ 0.2508950000000141,
+ 0.25090000000000146,
+ 0.25090000000000146,
+ 0.25090899999997873,
+ 0.2509090000000924,
+ 0.25091199999997116,
+ 0.25091199999997116,
+ 0.2509139999999661,
+ 0.25091699999995853,
+ 0.25092399999994086,
+ 0.25092499999993834,
+ 0.2509259999999358,
+ 0.2509260000000495,
+ 0.25092799999993076,
+ 0.2509350000000268,
+ 0.25093999999990046,
+ 0.25094000000001415,
+ 0.2509419999998954,
+ 0.2509469999999965,
+ 0.25094799999999395,
+ 0.2509539999999788,
+ 0.25095699999997123,
+ 0.2509589999999662,
+ 0.25095900000007987,
+ 0.25096000000007734,
+ 0.250961000000018,
+ 0.2509610000001885,
+ 0.2509629999999561,
+ 0.2509659999999485,
+ 0.25096899999994093,
+ 0.2509700000000521,
+ 0.25097299999993083,
+ 0.25098800000000665,
+ 0.25098899999989044,
+ 0.2509949999998753,
+ 0.2509969999999839,
+ 0.25100399999996625,
+ 0.25100800000018353,
+ 0.25101299999994353,
+ 0.2510220000000345,
+ 0.2510299999999006,
+ 0.2510340000000042,
+ 0.2510379999999941,
+ 0.2510420000000977,
+ 0.2510460000000876,
+ 0.2510460000000876,
+ 0.25105199999995875,
+ 0.2510549999999512,
+ 0.2510570000000598,
+ 0.2510579999999436,
+ 0.2510579999999436,
+ 0.2510620000000472,
+ 0.2510620000000472,
+ 0.251062999999931,
+ 0.25106399999992846,
+ 0.2510669999999209,
+ 0.25106800000003204,
+ 0.251070000000027,
+ 0.25107100000002447,
+ 0.25107200000002194,
+ 0.2510730000000194,
+ 0.25107699999989563,
+ 0.2510809999999992,
+ 0.25108299999999417,
+ 0.2510939999999664,
+ 0.25109599999996135,
+ 0.25109599999996135,
+ 0.25110100000000557,
+ 0.2511100000001534,
+ 0.25111500000002707,
+ 0.2511250000000018,
+ 0.25113099999998667,
+ 0.25113200000009783,
+ 0.25113499999997657,
+ 0.2511460000000625,
+ 0.2511509999999362,
+ 0.2511579999999185,
+ 0.25116300000001957,
+ 0.25116700000000947,
+ 0.25116800000000694,
+ 0.2511709999998857,
+ 0.25117099999999937,
+ 0.2511779999999817,
+ 0.2511899999999514,
+ 0.2511949999998251,
+ 0.25119500000005246,
+ 0.2511979999999312,
+ 0.25120300000003226,
+ 0.25120400000002974,
+ 0.2512069999999085,
+ 0.2512100000000146,
+ 0.25121200000000954,
+ 0.25121500000000196,
+ 0.25122299999998177,
+ 0.2512249999999767,
+ 0.2512310000000184,
+ 0.25123499999995147,
+ 0.2512399999999957,
+ 0.2512419999999338,
+ 0.2512419999999338,
+ 0.25124300000015864,
+ 0.2512459999999237,
+ 0.2512500000000273,
+ 0.2512530000000197,
+ 0.2512649999998757,
+ 0.25127899999995407,
+ 0.25128300000005765,
+ 0.2512890000000425,
+ 0.2512980000000198,
+ 0.2513050000000021,
+ 0.2513099999999895,
+ 0.2513129999999819,
+ 0.2513129999999819,
+ 0.25131899999996676,
+ 0.25132500000000846,
+ 0.2513280000000577,
+ 0.25134700000000976,
+ 0.2513490000000047,
+ 0.25135100000011334,
+ 0.2513529999999946,
+ 0.2513619999999719,
+ 0.25137499999993906,
+ 0.2513799999999833,
+ 0.25138400000003003,
+ 0.25139200000000983,
+ 0.25140299999998206,
+ 0.25140299999998206,
+ 0.2514059999998608,
+ 0.2514080000000831,
+ 0.2514089999999669,
+ 0.25142699999992146,
+ 0.2514280000000326,
+ 0.2514289999999164,
+ 0.25143499999990127,
+ 0.25145199999997203,
+ 0.2514520000000289,
+ 0.2514529999999695,
+ 0.251453999999967,
+ 0.25145899999995436,
+ 0.25145999999995183,
+ 0.25146699999993416,
+ 0.2514769999999089,
+ 0.2514809999997851,
+ 0.25148300000000745,
+ 0.25149599999986094,
+ 0.2515049999999519,
+ 0.25151100000005044,
+ 0.25151100000016413,
+ 0.2515129999999317,
+ 0.25151699999997845,
+ 0.251517000000149,
+ 0.25152300000013383,
+ 0.251529000000005,
+ 0.2515339999999924,
+ 0.25153499999987616,
+ 0.25153499999998985,
+ 0.25153900000009344,
+ 0.25156399999991663,
+ 0.25158299999998235,
+ 0.2515840000000935,
+ 0.25159099999996215,
+ 0.2516000000000531,
+ 0.25160799999991923,
+ 0.2516170000001239,
+ 0.25161899999989146,
+ 0.2516200000000026,
+ 0.2516250000001037,
+ 0.25163099999986116,
+ 0.2516330000000835,
+ 0.2516479999999319,
+ 0.2516520000000355,
+ 0.25165400000003046,
+ 0.25166200000001027,
+ 0.25166200000001027,
+ 0.2516689999999926,
+ 0.2516739999998663,
+ 0.25167400000009366,
+ 0.251692999999932,
+ 0.2517019999999093,
+ 0.25170600000001286,
+ 0.25170799999978044,
+ 0.25171099999988655,
+ 0.25171500000010383,
+ 0.25172599999996237,
+ 0.2517360000000508,
+ 0.25174300000003313,
+ 0.251749000000018,
+ 0.2517800000000534,
+ 0.2517809999999372,
+ 0.2517810000000509,
+ 0.2517849999999271,
+ 0.25178599999992457,
+ 0.2517879999999195,
+ 0.25179700000012417,
+ 0.2518000000000029,
+ 0.2518169999998463,
+ 0.25181799999995746,
+ 0.2518199999999524,
+ 0.2518199999999524,
+ 0.2518259999999941,
+ 0.2518309999999815,
+ 0.2518319999999221,
+ 0.2518400000000156,
+ 0.25184199999989687,
+ 0.25184300000000803,
+ 0.25184999999999036,
+ 0.25186200000007375,
+ 0.251878999999974,
+ 0.2518810000000258,
+ 0.2518929999998818,
+ 0.2519079999999576,
+ 0.2519139999999993,
+ 0.25191899999992984,
+ 0.2519240000000309,
+ 0.251940999999988,
+ 0.2519479999999703,
+ 0.25194999999996526,
+ 0.25195099999996273,
+ 0.2519590000000562,
+ 0.2519649999999274,
+ 0.2519649999999274,
+ 0.25197400000001835,
+ 0.2519849999999906,
+ 0.2520039999999426,
+ 0.2520230000000083,
+ 0.2520269999999982,
+ 0.2520359999999755,
+ 0.2520569999999225,
+ 0.25207799999998315,
+ 0.252091000000064,
+ 0.25209800000016,
+ 0.25210299999992003,
+ 0.2521150000000034,
+ 0.25212600000008933,
+ 0.2521289999999681,
+ 0.25215499999990243,
+ 0.25216199999999844,
+ 0.25217800000007173,
+ 0.25219800000002124,
+ 0.2521980000001349,
+ 0.25222099999996317,
+ 0.25222499999995307,
+ 0.25223700000003646,
+ 0.2522400000000289,
+ 0.25225700000009965,
+ 0.25226599999996324,
+ 0.2523040000000947,
+ 0.25230999999985215,
+ 0.25232200000004923,
+ 0.2523270000000366,
+ 0.2523350000000164,
+ 0.25240100000007715,
+ 0.25241699999992306,
+ 0.2524180000000342,
+ 0.252428000000009,
+ 0.25243399999999383,
+ 0.2524359999999888,
+ 0.252454000000057,
+ 0.25247799999988274,
+ 0.2524869999999737,
+ 0.25249299999995856,
+ 0.2525150000000167,
+ 0.2525180000000091,
+ 0.25255300000003444,
+ 0.2525669999999991,
+ 0.25259300000004714,
+ 0.25260000000002947,
+ 0.25263300000005984,
+ 0.2526379999999335,
+ 0.2526430000000346,
+ 0.252646000000027,
+ 0.2526470000000245,
+ 0.2526639999998679,
+ 0.25267699999994875,
+ 0.2526789999999437,
+ 0.25268599999981234,
+ 0.2527010000001155,
+ 0.25270500000010543,
+ 0.25274000000001706,
+ 0.2527429999998958,
+ 0.25274500000000444,
+ 0.2527460000000019,
+ 0.25274800000011055,
+ 0.25275699999997414,
+ 0.25278400000001966,
+ 0.2527900000000045,
+ 0.2527979999999843,
+ 0.2528109999998378,
+ 0.252819000000045,
+ 0.2528270000000248,
+ 0.2528700000000299,
+ 0.2528829999999971,
+ 0.2528930000000855,
+ 0.2528939999999693,
+ 0.25290099999983795,
+ 0.2529260000000022,
+ 0.25294000000008054,
+ 0.2529429999999593,
+ 0.2529500000000553,
+ 0.2529789999998684,
+ 0.2529899999999543,
+ 0.25300399999991896,
+ 0.253011000000015,
+ 0.25301999999999225,
+ 0.2530249999999796,
+ 0.2530259999999771,
+ 0.2530419999999367,
+ 0.25307500000008076,
+ 0.2530949999999734,
+ 0.25315299999988383,
+ 0.25316499999985353,
+ 0.2531709999999521,
+ 0.25317999999992935,
+ 0.25318800000002284,
+ 0.25319199999989905,
+ 0.2532049999999799,
+ 0.25320699999997487,
+ 0.25321499999995467,
+ 0.2532169999999496,
+ 0.25323999999989155,
+ 0.2532529999999724,
+ 0.25327099999992697,
+ 0.25328400000000784,
+ 0.2533019999998487,
+ 0.25330699999994977,
+ 0.25334399999997004,
+ 0.25335100000006605,
+ 0.25336700000002566,
+ 0.253374000000008,
+ 0.2533770000000004,
+ 0.2533970000000636,
+ 0.2534040000000459,
+ 0.2534080000000358,
+ 0.25341199999991204,
+ 0.25342299999999796,
+ 0.25346399999989444,
+ 0.25351100000000315,
+ 0.253573000000074,
+ 0.25357499999995525,
+ 0.25357499999995525,
+ 0.25357899999994515,
+ 0.25358600000004117,
+ 0.25358799999992243,
+ 0.25360699999987446,
+ 0.2536219999999503,
+ 0.25363399999992,
+ 0.2536379999999099,
+ 0.25365199999987453,
+ 0.2536840000000211,
+ 0.2537009999999782,
+ 0.25370999999995547,
+ 0.25371500000005653,
+ 0.25372600000002876,
+ 0.25375500000006923,
+ 0.25377800000001116,
+ 0.25378699999987475,
+ 0.2537929999998596,
+ 0.25379499999996824,
+ 0.2538129999999228,
+ 0.2538480000000618,
+ 0.25386200000002646,
+ 0.25386600000001636,
+ 0.25387100000000373,
+ 0.25389399999994566,
+ 0.25393000000008215,
+ 0.25393099999996593,
+ 0.25395000000003165,
+ 0.25396999999998116,
+ 0.25396999999998116,
+ 0.2539799999999559,
+ 0.25398599999994076,
+ 0.2539869999999951,
+ 0.25402999999994336,
+ 0.25404699999990044,
+ 0.25406199999997625,
+ 0.2540690000000154,
+ 0.2540880000000243,
+ 0.25414200000000164,
+ 0.25415399999997135,
+ 0.2542189999999209,
+ 0.2542540000001736,
+ 0.2542670000000271,
+ 0.2542670000000271,
+ 0.25427300000001196,
+ 0.2543009999999981,
+ 0.2543080000000373,
+ 0.2543110000001434,
+ 0.2544110000000046,
+ 0.2544149999999945,
+ 0.2544239999999718,
+ 0.2544269999998505,
+ 0.2544310000000678,
+ 0.2544770000000085,
+ 0.2545180000000187,
+ 0.25452000000018415,
+ 0.25452500000005784,
+ 0.25455700000009074,
+ 0.25456900000006044,
+ 0.25458500000013373,
+ 0.2546389999999974,
+ 0.2546859999999924,
+ 0.254703999999947,
+ 0.2547079999999369,
+ 0.2547150000000329,
+ 0.25477599999999256,
+ 0.2548059999999168,
+ 0.25481299999989915,
+ 0.25481300000001283,
+ 0.25484500000004573,
+ 0.25486000000000786,
+ 0.25489300000003823,
+ 0.25489700000002813,
+ 0.2549389999999221,
+ 0.25494400000002315,
+ 0.2549580000001015,
+ 0.25498000000004595,
+ 0.2549850000000333,
+ 0.2549910000000182,
+ 0.2550069999999778,
+ 0.25502800000003845,
+ 0.25504799999998795,
+ 0.25504799999998795,
+ 0.25507100000004357,
+ 0.2550730000000385,
+ 0.25510800000006384,
+ 0.2551109999999426,
+ 0.25512800000001334,
+ 0.25512800000001334,
+ 0.25515199999995275,
+ 0.25515199999995275,
+ 0.2551780000000008,
+ 0.2552109999999175,
+ 0.25521500000002106,
+ 0.25525200000004133,
+ 0.25525900000002366,
+ 0.2552620000000161,
+ 0.25527199999987715,
+ 0.2553259999999682,
+ 0.25533199999995304,
+ 0.2553490000000238,
+ 0.2553769999999531,
+ 0.2554059999999936,
+ 0.25541100000009465,
+ 0.2554930000000013,
+ 0.2555360000000064,
+ 0.25554000000011,
+ 0.25560399999994843,
+ 0.2556050000000596,
+ 0.2556400000000849,
+ 0.25569500000005974,
+ 0.2557050000000345,
+ 0.25570700000002944,
+ 0.2557130000000143,
+ 0.25571800000000167,
+ 0.25577899999996134,
+ 0.25583199999999806,
+ 0.2558530000000019,
+ 0.25586199999997916,
+ 0.25586599999996906,
+ 0.25594100000012077,
+ 0.25596299999995153,
+ 0.25597199999998566,
+ 0.25601199999999835,
+ 0.2560240000000249,
+ 0.25604199999997945,
+ 0.2560829999999896,
+ 0.2561400000001868,
+ 0.25615499999992153,
+ 0.2562310000000707,
+ 0.2562780000000089,
+ 0.2562909999999192,
+ 0.25629300000002786,
+ 0.2563040000000001,
+ 0.25638500000013664,
+ 0.25639300000000276,
+ 0.2564140000001771,
+ 0.25641699999994216,
+ 0.25644499999998516,
+ 0.25644899999997506,
+ 0.2564549999999599,
+ 0.2564740000000256,
+ 0.2564800000000105,
+ 0.2565230000000156,
+ 0.2565349999999853,
+ 0.2565500000000611,
+ 0.2565529999999967,
+ 0.25660800000014206,
+ 0.25661700000000565,
+ 0.25664900000003854,
+ 0.25665300000002844,
+ 0.25671299999999064,
+ 0.2567500000000109,
+ 0.2567590000001019,
+ 0.2568429999998898,
+ 0.2568459999999959,
+ 0.2568780000000288,
+ 0.2568949999999859,
+ 0.2569419999999809,
+ 0.25694499999997333,
+ 0.25698099999999613,
+ 0.25700999999997975,
+ 0.25701600000002145,
+ 0.2570769999999811,
+ 0.25712399999997615,
+ 0.2571410000000469,
+ 0.2572080000002188,
+ 0.25731099999995877,
+ 0.2573820000000069,
+ 0.2574009999998452,
+ 0.2574159999999779,
+ 0.2574859999999717,
+ 0.2575049999999237,
+ 0.2575659999999971,
+ 0.25759500000003754,
+ 0.2576649999998608,
+ 0.2576650000000882,
+ 0.25767100000007304,
+ 0.2577000000001135,
+ 0.2577049999999872,
+ 0.25773099999992155,
+ 0.2578479999999672,
+ 0.25793099999987135,
+ 0.2579509999999914,
+ 0.2580090000000155,
+ 0.2580350000000635,
+ 0.25804100000004837,
+ 0.25813899999980094,
+ 0.2581589999999778,
+ 0.25824499999998807,
+ 0.2582919999999831,
+ 0.25829799999996794,
+ 0.2583749999998872,
+ 0.25840299999981653,
+ 0.2584829999998419,
+ 0.2585510000000113,
+ 0.258687000000009,
+ 0.2587230000001455,
+ 0.25879600000007486,
+ 0.2588389999999663,
+ 0.2588839999998527,
+ 0.258925999999974,
+ 0.2590139999999792,
+ 0.25906099999997423,
+ 0.25912000000005264,
+ 0.25913100000002487,
+ 0.2591909999998734,
+ 0.25919900000008056,
+ 0.2592290000000048,
+ 0.25937100000010105,
+ 0.2593779999999697,
+ 0.2593860000000632,
+ 0.2594400000000405,
+ 0.25950600000010127,
+ 0.2595209999999497,
+ 0.2595619999999599,
+ 0.259661000000051,
+ 0.259757000000036,
+ 0.2597659999998996,
+ 0.2598090000001321,
+ 0.2598750000000791,
+ 0.25993400000015754,
+ 0.25996500000007927,
+ 0.2600529999999708,
+ 0.2602269999999862,
+ 0.2602830000000722,
+ 0.26028899999994337,
+ 0.26060899999993126,
+ 0.2606399999999667,
+ 0.2606700000001183,
+ 0.26067599999998947,
+ 0.26071600000000217,
+ 0.260857999999871,
+ 0.2609179999999469,
+ 0.2610349999999926,
+ 0.2611869999999499,
+ 0.2612179999998716,
+ 0.26131499999996777,
+ 0.2615250000001197,
+ 0.26169000000004417,
+ 0.26170200000001387,
+ 0.2617209999998522,
+ 0.2617600000000948,
+ 0.2617600000000948,
+ 0.26184200000000146,
+ 0.2620079999999234,
+ 0.26204200000006495,
+ 0.2620640000000094,
+ 0.26215199999995775,
+ 0.2621710000000803,
+ 0.26219300000002477,
+ 0.26220899999998437,
+ 0.26233400000000984,
+ 0.26253600000006827,
+ 0.262595000000033,
+ 0.26267699999993965,
+ 0.26270999999997,
+ 0.26275299999997515,
+ 0.2627639999999474,
+ 0.2630890000000363,
+ 0.26318399999991016,
+ 0.2632520000001932,
+ 0.26342899999986,
+ 0.26364699999999175,
+ 0.2637609999999313,
+ 0.2638520000000426,
+ 0.26390199999991637,
+ 0.2639360000000579,
+ 0.2640969999999925,
+ 0.264411999999993,
+ 0.2644199999999728,
+ 0.26460800000006657,
+ 0.2646260000001348,
+ 0.2646460000000843,
+ 0.2650710000000345,
+ 0.2652370000000701,
+ 0.265295999999978,
+ 0.2653820000000451,
+ 0.26539200000001983,
+ 0.2655809999998837,
+ 0.26558799999997973,
+ 0.2660289999998895,
+ 0.2660369999998693,
+ 0.26607000000012704,
+ 0.2665600000000268,
+ 0.26664899999991576,
+ 0.267221999999947,
+ 0.267565999999988,
+ 0.26828599999998914,
+ 0.2686550000000807,
+ 0.26882799999998497,
+ 0.2691869999998744,
+ 0.2695209999999406,
+ 0.2700730000000249,
+ 0.27008999999998196,
+ 0.2701830000000882,
+ 0.27030199999990145,
+ 0.2703469999999015,
+ 0.27107500000010987,
+ 0.27150800000003983,
+ 0.27176400000001877,
+ 0.2721589999999878,
+ 0.27252400000003263,
+ 0.2745260000001508,
+ 0.27463699999998425,
+ 0.27506399999992937,
+ 0.2760369999999739,
+ 0.2764119999999366,
+ 0.27655800000002273,
+ 0.27677299999982097,
+ 0.2776169999999638,
+ 0.27793900000006033,
+ 0.27797800000007555,
+ 0.2781889999999976,
+ 0.278199000000086,
+ 0.27857300000005125,
+ 0.27874099999996815,
+ 0.2787829999999758,
+ 0.27897200000006706,
+ 0.2801130000000285,
+ 0.2804029999999784,
+ 0.2811779999999544,
+ 0.28242599999998674,
+ 0.2824909999999363,
+ 0.28342399999996815,
+ 0.28343199999994795,
+ 0.284586999999874,
+ 0.28466200000002573,
+ 0.28478199999995013,
+ 0.2856059999999161,
+ 0.2867790000000241,
+ 0.28712000000018634,
+ 0.28735699999992903,
+ 0.28756700000008095,
+ 0.28902000000016415,
+ 0.29015400000002955,
+ 0.291398000000072,
+ 0.2932630000000245,
+ 0.29348799999979747,
+ 0.29416999999989457,
+ 0.2945879999999761,
+ 0.2971829999999045,
+ 0.29732899999999063,
+ 0.2975380000000314,
+ 0.2987519999999222,
+ 0.29886099999998805,
+ 0.29951500000015585,
+ 0.2996149999999034,
+ 0.30322000000001026,
+ 0.30343100000004597,
+ 0.30451400000015383,
+ 0.3051519999999073,
+ 0.30539900000007947,
+ 0.30661299999997027,
+ 0.30732400000010784,
+ 0.3073309999999765,
+ 0.30940000000009604,
+ 0.31058100000018385,
+ 0.3121409999998832,
+ 0.3124720000000707,
+ 0.3125600000000759,
+ 0.3147229999999581,
+ 0.3158589999998185,
+ 0.3163769999998749,
+ 0.3185829999999896,
+ 0.3191979999999148,
+ 0.3236650000001191,
+ 0.32767999999987296,
+ 0.3301650000000791,
+ 0.3325370000000021,
+ 0.33714400000008027,
+ 0.33937300000002324,
+ 0.3406739999998081,
+ 0.34094100000004346,
+ 0.34167500000012296,
+ 0.3423250000000735,
+ 0.34235599999988153,
+ 0.34326499999997395,
+ 0.34342800000001716,
+ 0.3463040000001456,
+ 0.3520189999999275,
+ 0.35229000000003907,
+ 0.3533390000000054,
+ 0.3540050000000292,
+ 0.35451000000011845,
+ 0.3546259999999961,
+ 0.3565760000001319,
+ 0.35709799999995084,
+ 0.35809600000004593,
+ 0.3586799999999357,
+ 0.36002799999994295,
+ 0.3643440000000737,
+ 0.3669159999999465,
+ 0.3688649999999143,
+ 0.3766099999998005,
+ 0.3787779999998975,
+ 0.38751300000001265,
+ 0.3905579999998281,
+ 0.4199270000000297,
+ 0.4297159999999849,
+ 0.43179700000007415,
+ 0.6097829999999931
]
}
]
From 8dd804967d74eaef259f6648dab7d652777fbe7d Mon Sep 17 00:00:00 2001
From: Yunfei He
Date: Mon, 17 Aug 2026 12:26:10 +0800
Subject: [PATCH 3/3] docs(benchmarks): align design index terminology
---
.agents/docs/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.agents/docs/README.md b/.agents/docs/README.md
index 61ee001..c50e095 100644
--- a/.agents/docs/README.md
+++ b/.agents/docs/README.md
@@ -2,7 +2,7 @@
- [Intent](intent.md) — the package family, its intended users, and the questions deliberately left open during bootstrap.
- [Public website](website.md) — the family-level product story, Guide and per-package documentation structure, and ownership of public content.
-- [Benchmark design](benchmark.md) — the Node-only public-API measurement boundary, scenario ownership, comparison groups, commands, retained results, and website presentation.
+- [Benchmark design](benchmark.md) — the Node-only public-API measurement boundary, scenario ownership, package/API/runtime comparisons, commands, retained results, and website presentation.
- [Architecture](architecture.md) — ownership, package boundaries, test placement and selection, and the complete-snapshot boundary.
- [Taffy-to-Node binding mapping](binding-mapping.md) — the repeatable rules for selecting Taffy's high-level Rust surface, mapping it through napi-rs, and preserving safety at the JavaScript boundary.
- [Selective query design notes](query-api-design.md) — the agreed high-level model for reading only selected Style, Layout, or DetailedLayoutInfo values without turning the API into a general query language.