SIMD by_options: 4 Option Sets Simultaneously¶
Processes 1 asset with 4 different option configurations in a single SIMD pass. There is no TA-Lib equivalent for this mode - the comparison baseline is 4 independent sequential calls (C_tulip, native Rust, or a binding's own sequential call, depending on the column). All times are nanoseconds (ns); lower is better.
- Speedup vs Rust / vs binding / vs C -
4x Sequential (ns) / SIMD 4-Options (ns) - Best / Worst - speedup range across the different option combinations tested
Reference: C_tulip, called once per option-set and summed to give the equivalent 4-option-set sequential cost for the same asset. There is no TA-Lib equivalent for this mode.
| Indicator | SIMD 4-Options (ns) | Speedup vs Rust | Speedup vs C | Best | Worst |
|---|---|---|---|---|---|
| adosc | 10,722 | 2.11x | 3.50x | 3.36x | 3.67x |
| adx | 16,822 | 2.55x | 3.95x | 3.73x | 4.15x |
| adxr | 27,674 | 2.16x | 2.60x | 2.40x | 2.78x |
| apo | 9,593 | 2.04x | 3.78x | 3.60x | 4.02x |
| aroon | 92,891 | 0.81x | 3.52x | 3.43x | 3.63x |
| aroonosc | 91,194 | 0.86x | 3.59x | 3.48x | 3.74x |
| atr | 10,056 | 1.92x | 4.39x | 4.08x | 4.60x |
| bbands | 22,486 | 1.17x | 1.60x | 1.56x | 1.66x |
| cci | 122,803 | 2.56x | 2.43x | 2.42x | 2.44x |
| cmo | 12,529 | 2.01x | 7.80x | 7.39x | 8.04x |
| cvi | 15,153 | 1.38x | 3.86x | 3.82x | 3.90x |
| dema | 9,033 | 2.82x | 3.02x | 2.72x | 3.16x |
| di | 19,688 | 3.48x | 2.15x | 2.02x | 2.27x |
| dm | 17,988 | 2.22x | 1.57x | 1.38x | 1.67x |
| donchianchannel | 119,596 | 0.44x | 1.94x | 1.89x | 1.99x |
| dpo | 13,748 | 0.79x | 0.82x | 0.77x | 0.86x |
| dx | 14,746 | 2.56x | 1.92x | 1.86x | 1.95x |
| elderray | 16,604 | 1.47x | 3.73x | 3.49x | 3.87x |
| ema | 10,142 | 1.90x | 4.38x | 4.04x | 4.77x |
| fisher | 184,963 | 1.06x | 2.92x | 2.89x | 2.99x |
| fosc | 20,049 | 1.62x | 1.95x | 1.95x | 1.96x |
| hma | 28,031 | 1.33x | 1.40x | 1.39x | 1.41x |
| kama | 12,833 | 2.32x | 2.73x | 2.72x | 2.74x |
| kvo | 18,065 | 2.00x | 2.07x | 2.05x | 2.09x |
| linreg | 11,269 | 2.36x | 3.33x | 3.14x | 3.50x |
| macd | 23,503 | 1.08x | 2.39x | 2.16x | 2.54x |
| mass | 12,882 | 2.03x | 3.82x | 3.70x | 4.00x |
| max | 27,480 | 0.76x | 4.44x | 4.22x | 4.72x |
| md | 55,496 | 1.00x | 1.07x | 1.07x | 1.08x |
| mfi | 18,037 | 1.77x | 2.74x | 2.70x | 2.76x |
| min | 48,048 | 0.59x | 4.73x | 4.54x | 4.92x |
| mom | 3,656 | 0.98x | 1.61x | 1.57x | 1.65x |
| msw | 232,335 | 2.23x | 25.12x | 25.02x | 25.24x |
| natr | 11,240 | 1.77x | 3.92x | 3.69x | 4.09x |
| ppo | 11,194 | 1.81x | 3.46x | 3.38x | 3.57x |
| psar | 62,801 | 0.56x | 0.58x | 0.57x | 0.59x |
| qstick | 10,267 | 1.00x | 1.19x | 1.18x | 1.19x |
| roc | 10,649 | 0.92x | 1.04x | 0.97x | 1.07x |
| rocr | 11,217 | 0.88x | 0.99x | 0.89x | 1.06x |
| rsi | 10,737 | 1.86x | 4.13x | 4.08x | 4.16x |
| sma | 9,724 | 1.05x | 1.13x | 1.12x | 1.13x |
| stddev | 15,431 | 0.99x | 1.93x | 1.91x | 1.94x |
| stoch | 119,704 | 0.69x | 1.67x | 1.61x | 1.71x |
| stochrsi | 119,136 | 0.95x | 1.59x | 1.54x | 1.63x |
| tema | 8,315 | 3.13x | 3.29x | 3.12x | 3.45x |
| trima | 16,130 | 1.39x | 1.77x | 1.76x | 1.79x |
| trix | 10,270 | 2.41x | 4.29x | 4.29x | 4.30x |
| tsf | 10,487 | 2.51x | 3.28x | 3.26x | 3.30x |
| ultosc | 42,688 | 1.57x | 1.71x | 1.70x | 1.74x |
| vhf | 110,222 | 0.50x | 1.43x | 1.34x | 1.47x |
| vidya | 38,428 | 1.26x | 1.00x | 1.00x | 1.00x |
| volatility | 22,844 | 1.59x | 2.36x | 1.59x | 3.13x |
| vosc | 13,451 | 1.18x | 1.51x | 1.44x | 1.54x |
| vwma | 15,981 | 0.87x | 1.27x | 1.27x | 1.28x |
| wilders | 8,266 | 2.30x | 5.31x | 5.28x | 5.33x |
| willr | 95,139 | 0.69x | 1.62x | 1.55x | 1.70x |
| wma | 9,022 | 2.84x | 3.86x | 3.67x | 3.96x |
| zlema | 9,264 | 2.58x | 3.72x | 3.33x | 3.86x |
Competitor: tulip_rs_python PyO3 binding. See Python Binding for setup and how to run.
| Indicator | SIMD 4-Options (ns) | Speedup vs Rust | Speedup vs tulip_rs_python | Best | Worst |
|---|---|---|---|---|---|
| adosc | 14,957 | 2.11x | 2.03x | 1.63x | 2.94x |
| adx | 36,889 | 2.55x | 3.71x | 2.75x | 4.91x |
| adxr | 33,885 | 2.16x | 2.37x | 2.00x | 2.74x |
| apo | 14,457 | 2.04x | 1.67x | 1.17x | 2.04x |
| aroon | 83,843 | 0.81x | 1.43x | 0.98x | 1.82x |
| aroonosc | 84,290 | 0.86x | 1.22x | 1.07x | 1.58x |
| atr | 23,968 | 1.92x | 1.23x | 0.80x | 1.51x |
| bbands | 50,801 | 1.17x | 1.02x | 0.58x | 1.39x |
| ccfisher | 295,752 | 3.26x | 3.18x | 3.07x | 3.29x |
| cci | 132,518 | 2.56x | 2.64x | 2.02x | 2.96x |
| chaikinmf | 23,802 | 1.42x | 2.01x | 1.72x | 2.21x |
| chandelierexit | 81,172 | 0.61x | 1.53x | 1.33x | 1.78x |
| cmo | 18,593 | 2.01x | 1.84x | 1.11x | 2.27x |
| cvi | 53,393 | 1.38x | 0.47x | 0.40x | 0.56x |
| cybercycle | 21,800 | 3.15x | 3.23x | 3.12x | 3.53x |
| dema | 22,325 | 2.82x | 1.39x | 0.77x | 2.07x |
| di | 32,934 | 3.48x | 3.47x | 2.91x | 4.37x |
| dm | 18,673 | 2.22x | 4.47x | 2.67x | 5.73x |
| donchianchannel | 99,648 | 0.44x | 0.60x | 0.49x | 0.65x |
| dpo | 15,324 | 0.79x | 1.12x | 0.62x | 1.39x |
| dx | 21,111 | 2.56x | 3.22x | 2.57x | 3.92x |
| ef | 12,371 | 1.39x | 2.50x | 1.88x | 3.79x |
| elderray | 27,880 | 1.47x | 1.22x | 1.01x | 1.40x |
| ema | 13,986 | 1.90x | 1.92x | 1.48x | 3.00x |
| fisher | 255,285 | 1.06x | 1.22x | 1.13x | 1.29x |
| fosc | 21,607 | 1.62x | 6.69x | 6.64x | 6.71x |
| highpass | 14,174 | 1.81x | 2.50x | 1.77x | 3.28x |
| hilberttransform | 40,285 | 2.31x | 1.99x | 1.51x | 2.59x |
| hma | 47,058 | 1.33x | 1.23x | 0.63x | 1.92x |
| ichimoku | 325,690 | 0.77x | 0.96x | 0.92x | 1.05x |
| kama | 21,073 | 2.32x | 1.89x | 1.44x | 2.29x |
| keltnerchannel | 38,217 | 0.89x | 1.24x | 0.94x | 1.68x |
| kvo | 21,157 | 2.00x | 2.70x | 2.06x | 3.14x |
| linreg | 30,181 | 2.36x | 1.90x | 0.65x | 3.59x |
| macd | 38,712 | 1.08x | 1.08x | 0.79x | 1.37x |
| mama | 259,162 | 3.50x | 3.49x | 3.43x | 3.55x |
| mass | 18,864 | 2.03x | 2.12x | 1.28x | 2.77x |
| max | 25,779 | 0.76x | 1.03x | 0.94x | 1.21x |
| md | 69,064 | 1.00x | 1.17x | 1.01x | 1.35x |
| mfi | 24,709 | 1.77x | 2.04x | 1.43x | 2.34x |
| min | 46,401 | 0.59x | 0.82x | 0.58x | 1.22x |
| mom | 7,266 | 0.98x | 1.09x | 0.69x | 1.77x |
| msw | 233,732 | 2.23x | 2.32x | 2.22x | 2.41x |
| natr | 14,234 | 1.77x | 6.08x | 5.28x | 6.64x |
| ppo | 25,873 | 1.81x | 1.41x | 0.69x | 2.22x |
| psar | 65,460 | 0.56x | 1.49x | 1.16x | 2.14x |
| qstick | 11,812 | 1.00x | 1.19x | 1.08x | 1.38x |
| roc | 16,301 | 0.92x | 1.22x | 0.69x | 2.00x |
| rocr | 11,761 | 0.88x | 1.05x | 0.97x | 1.28x |
| roofingfilter | 14,688 | 3.52x | 3.49x | 3.06x | 4.28x |
| rsi | 17,123 | 1.86x | 1.63x | 1.50x | 1.82x |
| sma | 16,591 | 1.05x | 1.49x | 1.18x | 1.80x |
| smaenvelope | 51,599 | 1.23x | 0.77x | 0.43x | 1.16x |
| stddev | 16,896 | 0.99x | 1.83x | 1.80x | 1.88x |
| stoch | 103,139 | 0.69x | 1.06x | 0.94x | 1.12x |
| stochrsi | 139,801 | 0.95x | 0.84x | 0.70x | 0.98x |
| supersmoother | 15,822 | 3.47x | 3.58x | 2.63x | 4.67x |
| supertrend | 24,045 | 2.49x | 4.56x | 3.47x | 5.90x |
| tema | 23,796 | 3.13x | 1.36x | 0.94x | 1.72x |
| trendmode | 228,043 | 3.86x | 3.94x | 3.87x | 4.00x |
| trima | 18,046 | 1.39x | 1.47x | 1.24x | 2.03x |
| trix | 14,414 | 2.41x | 4.74x | 4.22x | 5.15x |
| trvi | 22,504 | 1.06x | 1.14x | 1.11x | 1.15x |
| tsf | 17,065 | 2.51x | 4.40x | 2.18x | 5.96x |
| ultosc | 43,677 | 1.57x | 2.66x | 1.78x | 3.45x |
| vhf | 109,496 | 0.50x | 0.83x | 0.60x | 1.10x |
| vidya | 43,549 | 1.26x | 1.61x | 1.24x | 2.02x |
| volatility | 52,056 | 1.59x | 1.47x | 1.35x | 1.72x |
| vortex | 44,286 | 1.29x | 1.58x | 1.37x | 2.01x |
| vosc | 16,823 | 1.18x | 1.81x | 1.22x | 3.19x |
| vwma | 17,834 | 0.87x | 1.54x | 1.18x | 1.97x |
| wilders | 13,485 | 2.30x | 1.86x | 1.42x | 2.71x |
| willr | 87,476 | 0.69x | 0.91x | 0.75x | 1.07x |
| wma | 13,440 | 2.84x | 2.12x | 1.23x | 2.93x |
| zlema | 13,165 | 2.58x | 2.17x | 1.72x | 2.49x |
Competitor: tulip_rs_node napi-rs binding. See Node Binding for setup and how to run.
| Indicator | SIMD 4-Options (ns) | Speedup vs Rust | Speedup vs tulip_rs_node | Best | Worst |
|---|---|---|---|---|---|
| adosc | 32,530 | 2.11x | 1.10x | 1.03x | 1.26x |
| adx | 31,823 | 2.55x | 1.79x | 1.72x | 1.84x |
| adxr | 44,893 | 2.16x | 1.79x | 1.63x | 1.87x |
| apo | 24,924 | 2.04x | 1.13x | 1.11x | 1.18x |
| aroon | 144,170 | 0.81x | 0.81x | 0.78x | 0.83x |
| aroonosc | 133,521 | 0.86x | 0.77x | 0.76x | 0.79x |
| atr | 28,963 | 1.92x | 1.24x | 0.99x | 1.62x |
| bbands | 65,707 | 1.17x | 0.92x | 0.63x | 1.12x |
| ccfisher | 303,865 | 3.26x | 3.10x | 3.07x | 3.14x |
| cci | 157,779 | 2.56x | 2.15x | 2.11x | 2.16x |
| chaikinmf | 32,946 | 1.42x | 1.44x | 1.38x | 1.49x |
| chandelierexit | 128,765 | 0.61x | 0.80x | 0.76x | 0.88x |
| cmo | 27,846 | 2.01x | 1.27x | 1.16x | 1.35x |
| cvi | 33,555 | 1.38x | 1.00x | 0.86x | 1.05x |
| cybercycle | 33,709 | 3.15x | 2.25x | 2.16x | 2.36x |
| dema | 26,015 | 2.82x | 1.22x | 1.21x | 1.24x |
| di | 54,912 | 3.48x | 1.98x | 1.88x | 2.09x |
| dm | 37,749 | 2.22x | 1.78x | 1.43x | 1.91x |
| donchianchannel | 128,339 | 0.44x | 0.66x | 0.62x | 0.73x |
| dpo | 24,136 | 0.79x | 0.93x | 0.89x | 0.99x |
| dx | 35,778 | 2.56x | 1.33x | 1.30x | 1.37x |
| ef | 26,991 | 1.39x | 1.02x | 1.01x | 1.04x |
| elderray | 41,252 | 1.47x | 1.69x | 1.38x | 2.04x |
| ema | 26,736 | 1.90x | 1.04x | 1.03x | 1.05x |
| fisher | 272,444 | 1.06x | 1.08x | 1.06x | 1.10x |
| fosc | 34,146 | 1.62x | 4.54x | 4.50x | 4.59x |
| highpass | 25,769 | 1.81x | 1.05x | 1.00x | 1.18x |
| hilberttransform | 45,911 | 2.31x | 1.90x | 1.87x | 1.95x |
| hma | 42,841 | 1.33x | 1.03x | 0.95x | 1.15x |
| ichimoku | 381,868 | 0.77x | 0.91x | 0.89x | 0.93x |
| kama | 29,405 | 2.32x | 1.29x | 1.22x | 1.39x |
| keltnerchannel | 62,633 | 0.89x | 1.09x | 1.03x | 1.23x |
| kvo | 31,579 | 2.00x | 1.50x | 1.45x | 1.56x |
| linreg | 23,707 | 2.36x | 1.59x | 1.57x | 1.61x |
| macd | 56,592 | 1.08x | 1.27x | 1.20x | 1.36x |
| mama | 277,646 | 3.50x | 3.28x | 3.25x | 3.29x |
| mass | 29,908 | 2.03x | 1.19x | 1.08x | 1.37x |
| max | 43,186 | 0.76x | 1.07x | 0.98x | 1.20x |
| md | 73,268 | 1.00x | 1.01x | 0.99x | 1.02x |
| mfi | 41,326 | 1.77x | 1.23x | 1.08x | 1.44x |
| min | 65,897 | 0.59x | 0.86x | 0.81x | 0.91x |
| mom | 23,253 | 0.98x | 0.89x | 0.82x | 1.03x |
| msw | 250,317 | 2.23x | 2.21x | 2.18x | 2.23x |
| natr | 29,966 | 1.77x | 1.14x | 1.09x | 1.23x |
| ppo | 24,987 | 1.81x | 1.28x | 1.25x | 1.32x |
| psar | 73,515 | 0.56x | 0.71x | 0.70x | 0.71x |
| qstick | 25,433 | 1.00x | 0.96x | 0.95x | 0.98x |
| roc | 25,200 | 0.92x | 1.05x | 0.83x | 1.56x |
| rocr | 27,237 | 0.88x | 0.76x | 0.75x | 0.77x |
| roofingfilter | 29,662 | 3.52x | 1.77x | 1.56x | 2.17x |
| rsi | 21,329 | 1.86x | 1.45x | 1.43x | 1.46x |
| sma | 22,858 | 1.05x | 1.10x | 0.95x | 1.27x |
| smaenvelope | 51,585 | 1.23x | 1.20x | 1.10x | 1.26x |
| stddev | 26,348 | 0.99x | 1.40x | 1.38x | 1.42x |
| stoch | 163,670 | 0.69x | 0.84x | 0.79x | 0.91x |
| stochrsi | 137,440 | 0.95x | 0.67x | 0.66x | 0.68x |
| supersmoother | 27,862 | 3.47x | 1.83x | 1.79x | 1.86x |
| supertrend | 36,162 | 2.49x | 1.75x | 1.69x | 1.84x |
| tema | 30,093 | 3.13x | 1.24x | 1.20x | 1.33x |
| trendmode | 241,931 | 3.86x | 3.67x | 3.65x | 3.69x |
| trima | 28,296 | 1.39x | 1.19x | 1.06x | 1.52x |
| trix | 31,914 | 2.41x | 1.21x | 0.99x | 1.36x |
| trvi | 39,376 | 1.06x | 0.90x | 0.84x | 0.98x |
| tsf | 30,817 | 2.51x | 1.19x | 1.18x | 1.19x |
| ultosc | 54,548 | 1.57x | 1.28x | 1.27x | 1.29x |
| vhf | 142,106 | 0.50x | 0.47x | 0.44x | 0.49x |
| vidya | 53,608 | 1.26x | 1.11x | 1.09x | 1.13x |
| volatility | 58,843 | 1.59x | 0.95x | 0.94x | 0.95x |
| vortex | 56,041 | 1.29x | 1.49x | 1.41x | 1.67x |
| vosc | 26,196 | 1.18x | 1.12x | 1.11x | 1.16x |
| vwma | 26,613 | 0.87x | 1.18x | 1.07x | 1.46x |
| wilders | 21,177 | 2.30x | 1.43x | 1.30x | 1.73x |
| willr | 114,332 | 0.69x | 0.67x | 0.64x | 0.70x |
| wma | 23,748 | 2.84x | 1.62x | 1.35x | 1.92x |
| zlema | 21,312 | 2.58x | 1.48x | 1.45x | 1.51x |
Notable results - by_options
54 of 75 indicators (72%) show a SIMD speedup over 4x sequential Rust.
| Category | Indicator | Speedup |
|---|---|---|
| Top performers | trendmode |
3.86x |
| Top performers | roofingfilter |
3.52x |
| Top performers | mama |
3.50x |
| Top performers | di |
3.48x |
| Top performers | supersmoother |
3.47x |
| Top performers | ccfisher |
3.26x |
| Top performers | cybercycle |
3.15x |
| Top performers | tema |
3.13x |
| Top performers | wma |
2.84x |
| Notable improvement | msw |
2.23x (SDFT optimisation) |
| SIMD slower than sequential | donchianchannel |
0.44x |
| SIMD slower than sequential | vhf |
0.50x |
| SIMD slower than sequential | psar |
0.56x |
| SIMD slower than sequential | min |
0.59x |
Indicators that don't benefit tend to involve complex branching or irregular memory access patterns that prevent effective vectorisation.