---
url: https://jer-k.github.io/effect-prophet/benchmarks/logistic.md
---

# Logistic growth benchmarks

**58 of 58 cases match Python Prophet.**

Each case runs the same input through Effect Prophet and Python Prophet 1.4.0, then compares every forecast row, the trend, each component and the fitted noise. A case **matches** when all of them agree within its tolerances, and only matching cases are timed.

Each case's dot shows its result:  matches,  matches with internal differences flagged,  intentional difference,  doesn't match. Hover over a dot for details.

How to read the tables:

* **Effect output** and **Python output** are each library's final forecast value. Open a case to see every row side by side.
* **Largest difference** is the biggest gap between the two forecasts, as a share of the input data's range.
* **Effect time** and **Python time** are the median time for the **timed step**, usually fitting and predicting. Open a case for every step, including first-run and save/load times.
* A timed step marked **different work** calls public operations that produce different outputs in the two libraries, so its times aren't a speed comparison. The case page explains the difference.
* **Flagged** cases match, but the two libraries stopped their fitting search at slightly different points. The case page shows the internal numbers.

::: details About this run

* Run `2026-11-07T184211-397Z-3a5a6cec` on 2026-11-07, commit `3a5a6ce`
* Both libraries ran in `linux/arm64` containers on Apple M4 Pro
* effect-prophet 0.0.0
* effect 4.0.6
* prophet 1.4.0
* [Full benchmark report](https://github.com/jer-k/effect-prophet/blob/main/benchmark/results/retained/logistic-growth/2026-11-07T184211-397Z-3a5a6cec/report.md)

Timings come from one machine and describe this workload only. They are not a general speed ranking. Where Python is faster, it is often because Python runs Stan's optimizer as compiled C++, while Effect Prophet runs the same algorithm as WebAssembly with narrower vector instructions. The gap is widest for Newton's method on short histories with many parameters.

:::

## Country holiday calendars

Pinned country calendars, matching explicit-event controls, dynamic future years and portable saved models. Known-gap opt-in is partial provider output, not a completeness guarantee.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [US holidays, additive](/benchmarks/logistic/country-us-logistic-additive) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v5/country-logistic-96.json) | 80.5727 | 80.5727 | < 0.0001% | Fit and predict | 31.4 ms | 60.2 ms |
| [Explicit US control, additive](/benchmarks/logistic/country-explicit-us-logistic-additive) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v5/country-logistic-96.json) | 80.5727 | 80.5727 | < 0.0001% | Fit and predict | 30.9 ms | 57.1 ms |
| [US holidays, multiplicative](/benchmarks/logistic/country-us-logistic-multiplicative) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v5/country-logistic-96.json) | 86.0085 | 86.0085 | < 0.0001% | Fit and predict | 43.4 ms | 66.5 ms |
| [Explicit US control, multiplicative](/benchmarks/logistic/country-explicit-us-logistic-multiplicative) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v5/country-logistic-96.json) | 86.0085 | 86.0085 | < 0.0001% | Fit and predict | 43.1 ms | 65.5 ms |

## Default settings

`fit(history, { growth: "logistic" })` against `Prophet(growth="logistic").fit(df)` with nothing else set. Each library decides on its own which seasonal patterns, changepoints and optimizer to use. Warm-start cases fit the first rows, then refit the whole history from the parameters of that fit, as when new data arrives.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Defaults, three months of daily data](/benchmarks/logistic/logistic-reconcile-defaults-96) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-weekly-96.json) | 105.2798 | 105.2798 | < 0.0001% | Fit | 102 ms | 121 ms |
| [Defaults, eight months of daily data](/benchmarks/logistic/logistic-reconcile-defaults-256) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-weekly-256.json) | 113.0552 | 113.0552 | 0.0012% | Fit | 39.0 ms | 38.7 ms |
| [Defaults, a year with changing growth](/benchmarks/logistic/logistic-reconcile-defaults-rate-changes) | [365 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v3/logistic-rate-changes.json) | 193.9557 | 193.9523 | 0.0086% | Fit | 134 ms | 112 ms |
| [Refit after a week of new data](/benchmarks/logistic/warm-start-logistic-defaults-7-new-rows) | [365 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v3/logistic-rate-changes.json) | 193.9774 | 193.9853 | 0.039% | Refit from an earlier fit | 117 ms | 94.2 ms |

## Growth curves and changepoints

An S-shaped curve rising toward a slowly changing ceiling, with no changepoints, one hand-picked changepoint or automatic ones, under both target scalings. Three cases sit either side of 100 rows, where both libraries switch from Newton to L-BFGS.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [No changepoints, absmax scaling](/benchmarks/logistic/logistic-reconcile-basic-96-empty-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 105.2742 | 105.2742 | < 0.0001% | Fit | 6.87 ms | 13.3 ms |
| [One hand-picked changepoint, absmax scaling](/benchmarks/logistic/logistic-reconcile-basic-96-explicit-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 105.2754 | 105.2754 | < 0.0001% | Fit | 7.91 ms | 15.4 ms |
| [Three automatic changepoints, absmax scaling](/benchmarks/logistic/logistic-reconcile-basic-96-auto-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 105.2760 | 105.2760 | < 0.0001% | Fit | 19.1 ms | 27.1 ms |
| [No changepoints, minmax scaling](/benchmarks/logistic/logistic-reconcile-basic-96-empty-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 106.7569 | 106.7569 | < 0.0001% | Fit | 8.53 ms | 15.7 ms |
| [One hand-picked changepoint, minmax scaling](/benchmarks/logistic/logistic-reconcile-basic-96-explicit-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 105.7871 | 105.7871 | < 0.0001% | Fit | 17.0 ms | 25.5 ms |
| [Three automatic changepoints, minmax scaling](/benchmarks/logistic/logistic-reconcile-basic-96-auto-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 105.5809 | 105.5809 | < 0.0001% | Fit | 9.31 ms | 17.2 ms |
| [No changepoints, loose prior, absmax scaling](/benchmarks/logistic/logistic-reconcile-empty-loose-prior-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 99.6666 | 99.6666 | < 0.0001% | Fit | 118 ms | 128 ms |
| [No changepoints, loose prior, minmax scaling](/benchmarks/logistic/logistic-reconcile-empty-loose-prior-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-96.json) | 93.1168 | 93.1168 | < 0.0001% | Fit | 15.0 ms | 20.4 ms |
| [99 rows: just under the optimizer switch](/benchmarks/logistic/logistic-reconcile-basic-99) | [99 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-99.json) | 105.3754 | 105.3754 | < 0.0001% | Fit | 17.2 ms | 24.3 ms |
| [100 rows: just over the optimizer switch](/benchmarks/logistic/logistic-reconcile-basic-100) | [100 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-100.json) | 105.4111 | 105.4111 | < 0.0001% | Fit | 1.83 ms | 5.85 ms |
| [Eight months of daily data](/benchmarks/logistic/logistic-reconcile-basic-256) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-basic-256.json) | 113.6759 | 113.6759 | < 0.0001% | Fit | 2.95 ms | 7.03 ms |
| [Weekly pattern, absmax scaling](/benchmarks/logistic/logistic-implicit-floor-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 71.7786 | 71.7786 | < 0.0001% | Fit and predict | 18.9 ms | 32.0 ms |
| [Weekly pattern, minmax scaling](/benchmarks/logistic/logistic-implicit-floor-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 71.9060 | 71.9060 | < 0.0001% | Fit and predict | 20.3 ms | 35.9 ms |
| [Weekly pattern, automatic changepoints](/benchmarks/logistic/logistic-implicit-floor-auto-changepoints) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 71.9000 | 71.9000 | < 0.0001% | Fit and predict | 19.4 ms | 32.6 ms |
| [Weekly pattern, eight months](/benchmarks/logistic/logistic-implicit-floor-large) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor-large.json) | 98.0804 | 98.0804 | < 0.0001% | Fit and predict | 4.70 ms | 13.0 ms |

## Floors and ceilings

Histories with an explicit floor as well as a ceiling, both changing over time. Values are measured from the floor, as in Prophet.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Explicit floor, absmax scaling](/benchmarks/logistic/logistic-reconcile-explicit-floor-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-floor-96.json) | 105.8329 | 105.8329 | < 0.0001% | Fit | 6.51 ms | 13.5 ms |
| [Explicit floor, minmax scaling](/benchmarks/logistic/logistic-reconcile-explicit-floor-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-floor-96.json) | 105.8329 | 105.8329 | < 0.0001% | Fit | 10.1 ms | 15.9 ms |
| [Explicit floor with a regressor, absmax scaling](/benchmarks/logistic/logistic-explicit-floor-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-explicit-floor.json) | 72.2190 | 72.2190 | < 0.0001% | Fit and predict | 20.9 ms | 36.5 ms |
| [Explicit floor with a regressor, minmax scaling](/benchmarks/logistic/logistic-explicit-floor-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-explicit-floor.json) | 72.2190 | 72.2190 | < 0.0001% | Fit and predict | 17.4 ms | 32.2 ms |

## Seasonality, events and regressors

Each supported effect on its own, then all of them together: a weekly pattern, a switchable weekly pattern, an event with a window, and additive and multiplicative regressors.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Weekly pattern](/benchmarks/logistic/logistic-reconcile-weekly) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-weekly-96.json) | 105.2764 | 105.2764 | < 0.0001% | Fit | 15.0 ms | 25.0 ms |
| [Switchable weekly pattern](/benchmarks/logistic/logistic-reconcile-conditional) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-conditional-96.json) | 105.2763 | 105.2763 | < 0.0001% | Fit | 17.1 ms | 27.1 ms |
| [Event with a window](/benchmarks/logistic/logistic-reconcile-event) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-event-96.json) | 105.2751 | 105.2751 | < 0.0001% | Fit | 9.53 ms | 18.5 ms |
| [Additive regressor](/benchmarks/logistic/logistic-reconcile-regressor-additive) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-regressor-additive-96.json) | 105.2753 | 105.2753 | < 0.0001% | Fit | 8.10 ms | 14.5 ms |
| [Multiplicative regressor](/benchmarks/logistic/logistic-reconcile-regressor-multiplicative) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-regressor-multiplicative-96.json) | 105.2751 | 105.2751 | < 0.0001% | Fit | 10.1 ms | 16.7 ms |
| [Everything at once, absmax scaling](/benchmarks/logistic/logistic-reconcile-mixed-absmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-mixed-96.json) | 105.8453 | 105.8453 | < 0.0001% | Fit | 28.2 ms | 42.9 ms |
| [Everything at once, minmax scaling](/benchmarks/logistic/logistic-reconcile-mixed-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-mixed-96.json) | 105.8453 | 105.8453 | < 0.0001% | Fit | 26.2 ms | 39.3 ms |

## Unusual data

Shuffled rows, repeated dates, a falling curve, a curve pinned at its ceiling, a perfectly constant series and values outside the bounds.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Shuffled rows](/benchmarks/logistic/logistic-reconcile-unsorted) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-unsorted-96.json) | 105.2754 | 105.2754 | < 0.0001% | Fit | 7.71 ms | 14.6 ms |
| [Repeated dates](/benchmarks/logistic/logistic-reconcile-duplicates) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-duplicates-96.json) | 103.2373 | 103.2373 | < 0.0001% | Fit | 5.85 ms | 13.0 ms |
| [Falling curve](/benchmarks/logistic/logistic-reconcile-declining) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-declining-96.json) | 4.2479 | 4.2479 | < 0.0001% | Fit | 6.38 ms | 13.1 ms |
| [Pinned at the ceiling](/benchmarks/logistic/logistic-reconcile-saturated) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-saturated-96.json) | 109.5200 | 109.5200 | < 0.0001% | Fit | 10.5 ms | 18.3 ms |
| [Perfectly constant](/benchmarks/logistic/logistic-reconcile-constant) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-constant-96.json) | 49.9301 | 49.9301 | 7.9e-12 | Fit | 16.4 ms | 24.9 ms |
| [Values outside the bounds](/benchmarks/logistic/logistic-reconcile-out-of-bounds) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v2/logistic-out-of-bounds-96.json) | 106.0168 | 106.0168 | < 0.0001% | Fit | 8.97 ms | 16.2 ms |

## Uncertainty ranges

Both libraries simulate possible futures with random draws, so individual simulated values never match. Each range must still match Python's within the variation expected from that many draws. Anomaly cases also check that both libraries flag the outliers in a history.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Anomalies in a history](/benchmarks/logistic/anomalies-logistic-defaults-99) | [365 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v7/logistic-anomalies.json) | 157.6301 | 157.6272 | 0.073% | Fit and find anomalies | 71.6 ms | 298 ms |
| [Defaults, ranges with changing growth](/benchmarks/logistic/uncertainty-logistic-reconcile-defaults-rate-changes-intervals-1000) | [365 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v3/logistic-rate-changes.json) | 193.9557 | 193.9523 | 0.0086% | Simulate uncertainty (different work) | 23.3 ms | 293 ms |
| [Defaults, ranges with changing growth, second seed](/benchmarks/logistic/uncertainty-logistic-reconcile-defaults-rate-changes-intervals-1000-seed-7) | [365 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v3/logistic-rate-changes.json) | 193.9557 | 193.9523 | 0.0086% | Simulate uncertainty (different work) | 23.5 ms | 298 ms |
| [Samples, weekly pattern](/benchmarks/logistic/uncertainty-logistic-implicit-floor-minmax-full-samples-512) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 71.9060 | 71.9060 | < 0.0001% | Simulate uncertainty (different work) | 1.22 ms | 80.4 ms |
| [Ranges, eight months](/benchmarks/logistic/uncertainty-logistic-implicit-floor-large-full-intervals-128) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor-large.json) | 98.0804 | 98.0804 | < 0.0001% | Simulate uncertainty (different work) | 1.55 ms | 25.9 ms |
| [Ranges with an explicit floor](/benchmarks/logistic/uncertainty-logistic-explicit-floor-minmax-full-intervals-512) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-explicit-floor.json) | 72.2190 | 72.2190 | < 0.0001% | Simulate uncertainty (different work) | 1.01 ms | 92.3 ms |
| [Samples with an explicit floor](/benchmarks/logistic/uncertainty-logistic-explicit-floor-minmax-full-samples-128) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-explicit-floor.json) | 72.2190 | 72.2190 | < 0.0001% | Simulate uncertainty (different work) | 733 µs | 24.1 ms |
| [Ranges with mixed effects](/benchmarks/logistic/uncertainty-logistic-explicit-floor-minmax-mixed-conditions-events-intervals-128) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-uncertainty-mixed.json) | 72.2270 | 72.2270 | < 0.0001% | Simulate uncertainty (different work) | 760 µs | 30.3 ms |
| [Samples with mixed effects](/benchmarks/logistic/uncertainty-logistic-explicit-floor-minmax-mixed-conditions-events-samples-128) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-uncertainty-mixed.json) | 72.2270 | 72.2270 | < 0.0001% | Simulate uncertainty (different work) | 759 µs | 25.1 ms |

## Full Bayesian fitting

`fit(history, { mcmc: { samples, seed } })` against `Prophet(mcmc_samples=...)` and `fit(df, seed=...)`: both run Stan's NUTS sampler with the same settings. Their chains can't match draw for draw, so each forecast, component and coefficient, a posterior mean, must agree within 0.15 of the narrowest 80% range, and each range bound within the variation expected from that many posterior draws. Divergences and R-hat are reported, and flagged when Effect's chains mix clearly worse than Python's.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Capacity, floor and a multiplicative regressor](/benchmarks/logistic/mcmc-logistic-explicit-floor-minmax) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-explicit-floor.json) | 72.2189 | 72.2188 | 0.0091% | Simulate uncertainty (different work) | 2.91 ms | 210 ms |
| [A year of changing growth rates](/benchmarks/logistic/mcmc-logistic-rate-changes) | [365 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v3/logistic-rate-changes.json) | 193.9262 | 193.9405 | 0.027% | Simulate uncertainty (different work) | 38.4 ms | 356 ms |

## Cross-validation and choosing settings

Rolling-origin cross-validation, metrics, baselines, settings search and a final holdout check on logistic models.

| Case | Input | Effect output | Python output | Largest difference | Timed step | Effect time | Python time |
| --- | --- | ---: | ---: | ---: | --- | ---: | ---: |
| [Cross-validation and metrics](/benchmarks/logistic/evaluation-logistic-point) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 59.1345 | 59.1345 | < 0.0001% | Cross-validate (different work) | 17.1 ms | 59.5 ms |
| [Cross-validation with ranges](/benchmarks/logistic/evaluation-logistic-intervals) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 59.1345 | 59.1345 | < 0.0001% | Cross-validate with ranges (different work) | 18.1 ms | 64.1 ms |
| [Choosing settings and a final holdout](/benchmarks/logistic/evaluation-logistic-search) | [96 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor.json) | 59.1345 | 59.1345 | < 0.0001% | Search settings (different work) | 35.5 ms | 115 ms |
| [Cross-validation, eight months](/benchmarks/logistic/evaluation-logistic-large-point) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor-large.json) | 88.5367 | 88.5214 | 0.034% | Cross-validate (different work) | 14.1 ms | 41.5 ms |
| [Cross-validation with ranges, eight months](/benchmarks/logistic/evaluation-logistic-large-intervals) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor-large.json) | 88.5367 | 88.5214 | 0.034% | Cross-validate with ranges (different work) | 15.1 ms | 56.4 ms |
| [Twelve folds and a search, sequential and parallel](/benchmarks/logistic/evaluation-logistic-large-parallel) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor-large.json) | 90.7830 | 90.7874 | 0.079% | Cross-validate (different work) | 61.3 ms | 170 ms |
| [Monthly, custom and scaled metrics](/benchmarks/logistic/evaluation-logistic-large-months-metrics) | [256 rows](https://github.com/jer-k/effect-prophet/blob/main/benchmark/inputs/v1/logistic-implicit-floor-large.json) | 90.9241 | 90.9228 | 0.20% | — | — | — |
