Skip to content

Conversation

@Alvaro-Kothe
Copy link
Member


Similar to #62863. The window is recomputed from scratch on numerical instability and computes the central moments online.

Benchmarks

$ asv continuous -E virtualenv:3.13 upstream/main HEAD -b "rolling.*kurt" -a repeat=20

| Change   | Before [2d73d629] <main>   | After [2bff0061] <fix/polluted-rolling-kurt>   |   Ratio | Benchmark (Parameter)                                                                 |
|----------|----------------------------|------------------------------------------------|---------|---------------------------------------------------------------------------------------|
| +        | 2.34±0.3ms                 | 2.90±0.02ms                                    |    1.24 | rolling.ForwardWindowMethods.time_rolling('DataFrame', 1000, 'int', 'kurt')           |
| -        | 2.60±0.3ms                 | 2.27±0.05ms                                    |    0.87 | rolling.ForwardWindowMethods.time_rolling('Series', 1000, 'int', 'kurt')              |
| -        | 4.54±0.06ms                | 3.88±0.02ms                                    |    0.86 | rolling.VariableWindowMethods.time_method('DataFrame', '50s', 'int', 'kurt')          |
| -        | 4.43±0.03ms                | 3.74±0.03ms                                    |    0.84 | rolling.VariableWindowMethods.time_method('DataFrame', '50s', 'float', 'kurt')        |
| -        | 3.57±0.3ms                 | 2.99±0.07ms                                    |    0.84 | rolling.VariableWindowMethods.time_method('Series', '1h', 'int', 'kurt')              |
| -        | 3.05±0.05ms                | 2.49±0.02ms                                    |    0.82 | rolling.ForwardWindowMethods.time_rolling('Series', 10, 'float', 'kurt')              |
| -        | 3.24±0.03ms                | 2.66±0.01ms                                    |    0.82 | rolling.Methods.time_method('Series', ('rolling', {'window': 10}), 'int', 'kurt')     |
| -        | 3.16±0.4ms                 | 2.57±0.04ms                                    |    0.81 | rolling.Methods.time_method('Series', ('rolling', {'window': 10}), 'float', 'kurt')   |
| -        | 2.62±0.01ms                | 2.06±0.2ms                                     |    0.79 | rolling.Methods.time_method('DataFrame', ('expanding', {}), 'int', 'kurt')            |
| -        | 34.7±1ms                   | 26.1±0.4ms                                     |    0.75 | rolling.Groupby.time_method('kurt', ('rolling', {'window': 2}))                       |
| -        | 4.05±0.5ms                 | 2.87±0.02ms                                    |    0.71 | rolling.VariableWindowMethods.time_method('Series', '1h', 'float', 'kurt')            |
| -        | 3.67±0.4ms                 | 2.49±0.02ms                                    |    0.68 | rolling.ForwardWindowMethods.time_rolling('Series', 1000, 'float', 'kurt')            |
| -        | 2.51±0.01ms                | 1.69±0.2ms                                     |    0.67 | rolling.Methods.time_method('DataFrame', ('expanding', {}), 'float', 'kurt')          |
| -        | 3.16±0.02ms                | 2.08±0.2ms                                     |    0.66 | rolling.Methods.time_method('Series', ('expanding', {}), 'float', 'kurt')             |
| -        | 3.95±0.04ms                | 2.56±0.02ms                                    |    0.65 | rolling.Methods.time_method('Series', ('rolling', {'window': 1000}), 'float', 'kurt') |
| -        | 4.08±0.05ms                | 2.65±0.03ms                                    |    0.65 | rolling.Methods.time_method('Series', ('rolling', {'window': 1000}), 'int', 'kurt')   |
| -        | 4.39±0.6ms                 | 2.84±0.01ms                                    |    0.65 | rolling.VariableWindowMethods.time_method('Series', '1d', 'int', 'kurt')              |
| -        | 4.30±0.04ms                | 2.77±0.03ms                                    |    0.64 | rolling.VariableWindowMethods.time_method('Series', '1d', 'float', 'kurt')            |
| -        | 3.27±0.1ms                 | 1.99±0.2ms                                     |    0.61 | rolling.Methods.time_method('Series', ('expanding', {}), 'int', 'kurt')               |

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant