End-to-end fit + predict comparisons won by Flow.
canonical v2 / parity + disparity benchmark
Eligibility never means identity.
All 19 canonical rows are measured and currently eligible for comparison, but numerical, semantic and runtime disparities remain first-class evidence. This page renders the committed benchmark and disparity artifacts directly so differences cannot disappear merely because a row passes its contract.
End-to-end comparisons won by scikit-learn.
Rows admitted to the competitive denominator.
Rows with non-zero numerical or explicit semantic/configuration differences.
runtime overview runtime overview Each runtime plot shows end-to-end fit + predict time on a log scale. The plots use the same rows as the table below and therefore update whenever the frozen canonical result changes. scikit-learn total time divided by Flow total time. The vertical 1× line separates Flow wins from scikit-learn wins. persistent disparity The disparity plot normalizes each row's principal numerical difference against its effective tolerance where a tolerance is available. A value near 1 means the row is close to the acceptance boundary. Semantic/configuration differences are tracked in the same artifact and remain visible in the table. The dashed line is the acceptance boundary. Values can remain non-zero even for eligible rows. all canonical rows Every row is shown below. Speedup is methodology The benchmark consumes the same persisted train/test indices in Python and Flow. Python uses high-resolution adaptive timing and the canonical runner aggregates repeated process measurements with medians and IQR. Flow timings are emitted in milliseconds and aggregated by the same runner. Supervised rows compare predictive metrics under declared tolerances. PCA additionally checks explained variance, singular values, reconstruction error and sign-aligned components. KMeans uses permutation-invariant clustering quality and inertia. The persistent disparity artifact preserves raw numerical gaps and known semantic/configuration differences even after the estimator-specific eligibility contract succeeds. historical deployment evidence The repository also contains a historical deployment comparison recording a roughly 1.4 MB Flow native executable and a roughly 65× cold-start advantage (33 ms versus 2160 ms). Those figures come from a different deployment experiment and are intentionally not mixed into the canonical estimator timing denominator. trajectory Every other figure on this page is a ratio of Flow to scikit-learn. A ratio cannot distinguish Flow getting faster from scikit-learn getting slower, and it hides the case where both move together. These are the absolute per-row totals recorded at each freeze. reproduceThe plots are generated from the canonical JSON.
All 19 speed ratios
Iris total runtime
Digits total runtime
Diabetes total runtime
Passing parity does not erase the gap.
Numerical disparity relative to tolerance
No selected-win table.
sklearn_ms / flow_ms; values above 1× favor Flow. Strict diagnostic status is kept separate from final eligibility.Algorithm Dataset Final parity Strict diagnostic Winner score |Δ| sklearn ms Flow ms speedup Correctness, disparity and timing are separate dimensions.
Footprint and startup remain separate experiments.
Each implementation's own timings, across freezes.
Read the source artifacts.