Generated from the pinned sklearn public estimator surface.
execution architecture / generated appraisal
“Python versus compiled” is the wrong comparison.
scikit-learn is layered. Its public API is Python, but estimator work may execute in Python orchestration, NumPy/SciPy, BLAS/LAPACK, sklearn-owned compiled code or mature external native libraries. Flow-scikit now maps those layers, profiles representative workloads and joins that evidence to the canonical benchmark.
Representative fit/inference attribution rows.
Compiled/mixed paths with explicit retain/replace dispositions.
Experiments separating public API overhead from underlying kernels.
substrate signal
Where Flow wins is not random.
The current grouped result is descriptive evidence, not causal proof. It is nevertheless useful enough to prioritize engineering: Flow performs best on rows classified Python-bound, is mixed on boundary-heavy workloads, and currently loses every external-native-bound headline comparison.
| sklearn fit substrate | rows | mean Flow speedup | Flow win fraction |
|---|
all headline rows
Every benchmark result is attached to an execution hypothesis.
| Algorithm | Dataset | Substrate | Parity | Winner | Flow speedup | Python self share |
|---|
roadmap logic
Replace selectively. Reuse deliberately.
Python-bound and boundary-heavy operations can rank highly when profiling shows orchestration cost, allocation pressure or repeated crossings. sklearn-owned compiled hotspots become direct Flow replacement targets when parity and benchmark evidence justify it. BLAS/LAPACK, liblinear, libsvm and other mature native kernels receive a reuse bias unless measurements show a real reason to replace them.
The generated optimization roadmap, native hotspot audit and full estimator inventory are the detailed source artifacts.
defensible conclusion
Whole-estimator compilation is a measurable hypothesis now.
Flow-scikit no longer needs to infer opportunity from whether sklearn source files happen to be Python or Cython. The repository can connect a win or loss to the substrate underneath the public API, the Python-visible runtime share, native crossings, parity status and current Flow implementation. That makes future rewrite decisions falsifiable rather than rhetorical.