SIMD by_options: 4 Option Sets Simultaneously¶
Processes 1 asset with 4 different option configurations in a single SIMD pass. Neither C_tulip, TA-Lib, RustTa, nor Kand have a native by_options SIMD mode, so their comparison baseline is computed as 4x their single-option-set average call time (i.e. 4 independent sequential calls). All times are nanoseconds (ns); lower is better.
- Speedup vs binding scalar -
SIMD 4-Options (ns) / Binding's own sequential calls(tulip_rs_python, tulip_rs_node, tulip_rs_ffi_c, tulip_rs_go) - Speedup vs competitor libraries -
4x Competitor's single-call avg time / SIMD 4-Options (ns)
Reference libraries: RustTa (bukosabino/ta) and Kand (kand-labs/kand), each called once per option-set and summed to give the equivalent 4-option-set sequential cost. Kand uses NaN-padding which may affect some indicators.
| Indicator | SIMD 4-Options (ns) | Speedup vs Rust | Speedup vs RustTa | Speedup vs Kand |
|---|---|---|---|---|
| adosc | 10,722 | 2.11x | --- | 9.13x |
| adx | 16,822 | 2.55x | --- | 17.92x |
| adxr | 27,674 | 2.16x | --- | 11.16x |
| apo | 9,593 | 2.04x | --- | --- |
| aroon | 92,891 | 0.81x | --- | 16.14x |
| aroonosc | 91,194 | 0.86x | --- | 16.50x |
| atr | 10,056 | 1.92x | 3.85x | 9.07x |
| bbands | 23,016 | 0.93x | --- | --- |
| ccfisher | 279,742 | 3.26x | --- | --- |
| cci | 119,200 | 2.63x | --- | --- |
| chaikinmf | 20,332 | 1.42x | --- | --- |
| chandelierexit | 120,173 | 0.61x | 1.46x | --- |
| cmo | 12,529 | 2.01x | --- | --- |
| cvi | 15,153 | 1.38x | --- | --- |
| cybercycle | 21,151 | 3.15x | --- | --- |
| dema | 9,033 | 2.82x | --- | 10.51x |
| di | 19,688 | 3.48x | --- | 5.06x |
| dm | 17,988 | 2.22x | --- | 5.06x |
| donchianchannel | 119,596 | 0.44x | --- | --- |
| dpo | 13,748 | 0.79x | --- | --- |
| dx | 14,746 | 2.56x | --- | 14.21x |
| ef | 11,242 | 1.39x | 9.43x | --- |
| elderray | 16,604 | 1.47x | --- | --- |
| ema | 8,669 | 2.21x | 3.83x | 3.99x |
| fisher | 187,945 | 1.04x | --- | --- |
| fosc | 12,479 | 1.62x | --- | --- |
| highpass | 10,672 | 1.81x | --- | --- |
| hilberttransform | 24,843 | 2.31x | --- | --- |
| hma | 28,031 | 1.33x | --- | --- |
| ichimoku | 360,258 | 0.77x | --- | --- |
| kama | 12,833 | 2.32x | --- | --- |
| keltnerchannel | 30,882 | 0.89x | 1.67x | --- |
| kvo | 18,065 | 2.00x | --- | --- |
| linreg | 11,047 | 2.74x | --- | --- |
| macd | 23,503 | 1.08x | 1.41x | 5.02x |
| mama | 262,591 | 3.50x | --- | --- |
| mass | 12,882 | 2.03x | --- | --- |
| max | 27,480 | 0.76x | 2.07x | --- |
| md | 55,496 | 1.00x | 2.66x | --- |
| mfi | 18,037 | 1.77x | 5.29x | 63.95x |
| min | 48,048 | 0.59x | 2.12x | --- |
| mom | 3,656 | 0.98x | --- | 1.54x |
| msw | 146,336 | 3.54x | --- | --- |
| natr | 11,240 | 1.77x | --- | 9.15x |
| ppo | 11,194 | 1.81x | 2.97x | --- |
| psar | 62,801 | 0.56x | --- | 1.16x |
| qstick | 10,267 | 1.00x | --- | --- |
| roc | 10,649 | 0.92x | 1.15x | 1.06x |
| rocr | 11,217 | 0.88x | --- | 0.97x |
| roofingfilter | 12,210 | 3.52x | --- | --- |
| rsi | 10,737 | 1.86x | 3.09x | 8.95x |
| sma | 9,724 | 1.05x | 1.97x | 2.08x |
| smaenvelope | 23,187 | 1.23x | --- | --- |
| stddev | 15,431 | 0.99x | 2.29x | --- |
| stoch | 118,833 | 0.69x | 1.65x | 13.70x |
| stochrsi | 117,900 | 0.65x | --- | --- |
| supersmoother | 13,770 | 3.12x | --- | --- |
| supertrend | 22,096 | 2.19x | --- | 8.15x |
| tema | 9,594 | 2.86x | --- | 11.70x |
| trendmode | 228,155 | 3.85x | --- | --- |
| trima | 16,656 | 1.35x | --- | 2.53x |
| trix | 11,661 | 2.21x | --- | 10.03x |
| trvi | 15,962 | 1.38x | --- | --- |
| tsf | 11,371 | 2.34x | --- | --- |
| ultosc | 67,072 | 0.93x | --- | --- |
| vhf | 97,967 | 0.56x | --- | --- |
| vidya | 38,955 | 1.25x | --- | --- |
| volatility | 22,330 | 1.22x | --- | --- |
| vortex | 25,792 | 1.26x | --- | --- |
| vosc | 13,701 | 1.06x | --- | --- |
| vwma | 16,799 | 0.83x | --- | --- |
| wilders | 10,519 | 1.83x | --- | --- |
| willr | 91,740 | 0.75x | --- | 15.67x |
| wma | 10,150 | 1.95x | --- | 21.73x |
| zlema | 10,147 | 2.37x | --- | --- |
Reference: C_tulip and TA-Lib, each called once per option-set and summed to give the equivalent 4-option-set sequential cost for the same asset. There is no native SIMD equivalent for TA-Lib in this mode.
| Indicator | SIMD 4-Options (ns) | Speedup vs Rust | Speedup vs C | Speedup vs TA-Lib |
|---|---|---|---|---|
| adosc | 10,722 | 2.11x | 3.50x | 3.19x |
| adx | 16,822 | 2.55x | 3.95x | 9.08x |
| adxr | 27,674 | 2.16x | 2.60x | 5.68x |
| apo | 9,593 | 2.04x | 3.78x | 4.32x |
| aroon | 92,891 | 0.81x | 3.52x | 1.66x |
| aroonosc | 91,194 | 0.86x | 3.59x | 1.58x |
| atr | 10,056 | 1.92x | 4.39x | 10.65x |
| bbands | 22,486 | 0.93x | 1.60x | 3.46x |
| cci | 119,243 | 2.63x | 2.52x | 3.75x |
| cmo | 12,529 | 2.01x | 7.80x | 8.27x |
| cvi | 15,153 | 1.38x | 3.86x | --- |
| dema | 9,033 | 2.82x | 3.02x | 9.87x |
| di | 19,688 | 3.48x | 2.15x | 11.58x |
| dm | 17,988 | 2.22x | 1.57x | --- |
| donchianchannel | 119,596 | 0.44x | 1.94x | --- |
| dpo | 13,748 | 0.79x | 0.82x | --- |
| dx | 14,746 | 2.56x | 1.92x | 10.28x |
| elderray | 16,604 | 1.47x | 3.73x | --- |
| ema | 8,669 | 2.21x | 5.09x | 4.91x |
| fisher | 187,945 | 1.04x | 2.87x | --- |
| fosc | 20,039 | 1.62x | 1.96x | --- |
| hma | 28,031 | 1.33x | 1.40x | --- |
| kama | 12,833 | 2.32x | 2.73x | 3.34x |
| kvo | 18,065 | 2.00x | 2.07x | --- |
| linreg | 11,280 | 2.74x | 2.43x | 20.21x |
| macd | 23,503 | 1.08x | 2.39x | 5.86x |
| mass | 12,882 | 2.03x | 3.82x | --- |
| max | 27,480 | 0.76x | 4.44x | 1.53x |
| md | 55,496 | 1.00x | 1.07x | --- |
| mfi | 18,037 | 1.77x | 2.74x | 2.19x |
| min | 48,048 | 0.59x | 4.73x | 1.22x |
| mom | 3,656 | 0.98x | 1.61x | 0.84x |
| msw | 147,040 | 3.54x | 40.10x | --- |
| natr | 11,240 | 1.77x | 3.92x | 9.52x |
| ppo | 11,194 | 1.81x | 3.46x | 5.08x |
| psar | 62,801 | 0.56x | 0.58x | 0.54x |
| qstick | 10,267 | 1.00x | 1.19x | --- |
| roc | 10,649 | 0.92x | 1.04x | 1.78x |
| rocr | 11,217 | 0.88x | 0.99x | 1.68x |
| rsi | 10,737 | 1.86x | 4.13x | 9.62x |
| sma | 9,724 | 1.05x | 1.13x | 1.93x |
| stddev | 15,431 | 0.99x | 1.93x | 4.30x |
| stoch | 118,833 | 0.69x | 3.19x | 1.80x |
| stochrsi | 117,900 | 0.65x | 1.47x | 1.70x |
| tema | 9,594 | 2.86x | 2.92x | 13.80x |
| trima | 16,656 | 1.35x | 1.80x | 1.71x |
| trix | 11,661 | 2.21x | 3.81x | 12.49x |
| tsf | 11,371 | 2.34x | 3.30x | 20.31x |
| ultosc | 67,072 | 0.93x | 1.11x | 2.72x |
| vhf | 97,967 | 0.56x | 3.20x | --- |
| vidya | 38,955 | 1.25x | 1.99x | --- |
| volatility | 22,330 | 1.22x | 3.26x | --- |
| vosc | 13,701 | 1.06x | 1.50x | --- |
| vwma | 16,799 | 0.83x | 1.22x | --- |
| wilders | 10,519 | 1.83x | 4.21x | --- |
| willr | 91,740 | 0.75x | 3.76x | 1.81x |
| wma | 10,150 | 1.95x | 3.44x | 1.88x |
| zlema | 10,147 | 2.37x | 3.43x | --- |
Reference: tulip_rs_python PyO3 binding. Competitor speedups are computed as 4x the competitor's average single-call time, since these libraries have no SIMD-equivalent batched mode.
| Indicator | SIMD 4-Options (ns) | Speedup vs tulip_rs_python | Speedup vs ta | Speedup vs pandas_ta |
|---|---|---|---|---|
| adosc | 19,742 | 1.41x | --- | --- |
| adx | 39,774 | 2.50x | 2172.95x | 344.78x |
| adxr | 40,260 | 2.32x | --- | --- |
| apo | 18,772 | 1.56x | --- | 29.97x |
| aroon | 96,641 | 1.47x | 429.45x | 525.19x |
| aroonosc | 100,194 | 1.34x | --- | 508.65x |
| atr | 19,303 | 2.92x | 2362.27x | 197.23x |
| bbands | 41,312 | 1.44x | 23.14x | 54.28x |
| ccfisher | 291,025 | 3.15x | --- | --- |
| cci | 123,824 | 2.99x | 834.10x | 709.36x |
| chaikinmf | 29,182 | 1.47x | 38.22x | 45.34x |
| chandelierexit | 86,147 | 1.56x | --- | 80.89x |
| cmo | 14,122 | 2.40x | --- | 157.30x |
| cvi | 20,292 | 1.49x | --- | --- |
| cybercycle | 21,650 | 3.19x | --- | --- |
| dema | 20,070 | 1.59x | 26.71x | 57.23x |
| di | 33,902 | 5.24x | --- | 248.16x |
| dm | 30,040 | 3.40x | --- | 280.99x |
| donchianchannel | 103,600 | 0.65x | 10.54x | 15.72x |
| dpo | 20,024 | 0.66x | 24.75x | 29.05x |
| dx | 23,061 | 5.28x | --- | 591.36x |
| ef | 15,017 | 1.70x | --- | 41.10x |
| elderray | 18,924 | 1.83x | --- | 63.77x |
| ema | 15,428 | 1.58x | 14.92x | 30.83x |
| fisher | 248,727 | 1.31x | --- | 126.39x |
| fosc | 14,083 | 2.47x | --- | --- |
| highpass | 11,095 | 2.35x | --- | --- |
| hilberttransform | 34,764 | 2.24x | --- | --- |
| hma | 34,730 | 2.41x | 1176.49x | 70.57x |
| ichimoku | 334,842 | 1.13x | --- | 16.40x |
| kama | 22,076 | 4.73x | 699.65x | 1891.33x |
| keltnerchannel | 38,011 | 2.27x | 44.17x | 133.94x |
| kvo | 26,728 | 3.86x | --- | 178.09x |
| linreg | 24,519 | 4.22x | --- | 2819.40x |
| macd | 57,972 | 1.71x | 13.62x | 55.72x |
| mama | 258,057 | 3.47x | --- | 4.22x |
| mass | 24,621 | 1.24x | 34.22x | 79.46x |
| max | 27,766 | 1.24x | --- | --- |
| md | 62,561 | 2.52x | --- | 1388.50x |
| mfi | 35,655 | 1.23x | 3335.93x | 22.09x |
| min | 57,113 | 0.86x | --- | --- |
| mom | 5,209 | 1.04x | 15.58x | 21.14x |
| msw | 147,230 | 3.61x | --- | --- |
| natr | 12,467 | 5.29x | --- | 344.59x |
| ppo | 24,492 | 1.70x | 37.70x | 77.96x |
| psar | 77,464 | 1.50x | 10275.25x | 255.21x |
| qstick | 23,994 | 0.88x | --- | --- |
| roc | 22,088 | 1.40x | 19.15x | 6.11x |
| rocr | 14,720 | 2.51x | --- | 12.50x |
| roofingfilter | 25,027 | 2.59x | --- | --- |
| rsi | 17,873 | 1.70x | 106.92x | 112.26x |
| sma | 19,112 | 0.95x | 15.52x | 76.32x |
| smaenvelope | 40,112 | 1.07x | --- | --- |
| stddev | 35,395 | 1.26x | --- | 15.85x |
| stoch | 107,257 | 1.17x | 11.17x | 37.46x |
| stochrsi | 125,647 | 1.27x | 28.93x | 34.93x |
| supersmoother | 14,821 | 3.08x | --- | 11.03x |
| supertrend | 26,229 | 4.60x | --- | 6734.40x |
| tema | 16,238 | 2.30x | 53.00x | 102.85x |
| trendmode | 227,861 | 3.87x | --- | --- |
| trima | 26,507 | 1.26x | --- | 16.52x |
| trix | 14,334 | 5.14x | 85.63x | 213.58x |
| trvi | 37,233 | 0.79x | --- | --- |
| tsf | 19,684 | 3.46x | --- | 3546.38x |
| ultosc | 43,766 | 2.00x | 148.77x | 177.93x |
| vhf | 105,627 | 0.63x | --- | 18.64x |
| vidya | 40,978 | 2.06x | --- | 8070.98x |
| volatility | 50,107 | 1.11x | --- | 11.39x |
| vortex | 46,229 | 1.82x | 79.73x | 109.83x |
| vosc | 22,283 | 1.25x | --- | --- |
| vwma | 30,400 | 1.42x | --- | 26.66x |
| wilders | 14,875 | 1.63x | --- | 17.74x |
| willr | 92,275 | 0.93x | 12.96x | 14.71x |
| wma | 11,038 | 2.21x | 1222.49x | 76.83x |
| zlema | 11,191 | 3.14x | --- | 81.22x |
Reference: tulip_rs_node napi-rs binding. Competitor speedups are computed as 4x the competitor's average single-call time, since these libraries have no SIMD-equivalent batched mode.
| Indicator | SIMD 4-Options (ns) | Speedup vs tulip_rs_node | Speedup vs technicalindicators | Speedup vs indicatorts |
|---|---|---|---|---|
| adosc | 31,289 | 1.22x | --- | --- |
| adx | 33,165 | 1.68x | 161.05x | --- |
| adxr | 46,864 | 1.78x | --- | --- |
| apo | 31,389 | 1.03x | --- | 5.86x |
| aroon | 143,798 | 0.80x | --- | 20.81x |
| aroonosc | 135,741 | 0.75x | --- | --- |
| atr | 30,653 | 1.15x | 54.92x | 35.19x |
| bbands | 68,371 | 1.15x | 366.47x | 17.42x |
| ccfisher | 298,531 | 3.14x | --- | --- |
| cci | 151,568 | 2.25x | 127.44x | 1.75x |
| chaikinmf | 33,571 | 1.54x | --- | 6.53x |
| chandelierexit | 147,018 | 0.72x | --- | 27.58x |
| cmo | 27,107 | 1.44x | --- | --- |
| cvi | 31,639 | 1.07x | --- | --- |
| cybercycle | 33,380 | 2.27x | --- | --- |
| dema | 23,610 | 1.35x | --- | 7.86x |
| di | 52,006 | 2.13x | --- | --- |
| dm | 45,208 | 1.54x | --- | --- |
| donchianchannel | 133,390 | 0.62x | --- | 24.36x |
| dpo | 26,686 | 0.86x | --- | --- |
| dx | 35,546 | 1.39x | --- | --- |
| ef | 27,045 | 1.02x | --- | --- |
| elderray | 53,494 | 1.27x | --- | --- |
| ema | 27,026 | 1.15x | 21.93x | 2.97x |
| fisher | 274,736 | 1.07x | --- | --- |
| fosc | 29,044 | 1.54x | --- | --- |
| highpass | 27,049 | 1.00x | --- | --- |
| hilberttransform | 56,191 | 1.64x | --- | --- |
| hma | 43,792 | 0.98x | --- | --- |
| ichimoku | 383,447 | 0.92x | 44.96x | --- |
| kama | 24,557 | 1.53x | --- | --- |
| keltnerchannel | 138,170 | 0.84x | --- | 8.32x |
| kvo | 34,192 | 1.43x | --- | --- |
| linreg | 27,691 | 1.39x | --- | --- |
| macd | 53,881 | 1.34x | 45.55x | 4.50x |
| mama | 274,763 | 3.34x | --- | --- |
| mass | 36,716 | 1.27x | --- | --- |
| max | 43,414 | 1.01x | --- | 52.14x |
| md | 70,527 | 1.03x | --- | --- |
| mfi | 39,266 | 1.34x | 206.72x | 26.57x |
| min | 67,594 | 0.90x | --- | 30.08x |
| mom | 22,423 | 0.88x | --- | --- |
| msw | 164,844 | 3.39x | --- | --- |
| natr | 30,122 | 1.15x | --- | --- |
| ppo | 32,358 | 1.04x | --- | 9.77x |
| psar | 76,669 | 0.68x | 11.93x | 2.40x |
| qstick | 25,549 | 0.97x | --- | 2.40x |
| roc | 25,325 | 1.02x | 100.53x | 2.10x |
| rocr | 27,927 | 0.75x | --- | --- |
| roofingfilter | 30,756 | 1.65x | --- | --- |
| rsi | 24,472 | 1.28x | 151.27x | 17.39x |
| sma | 27,305 | 1.06x | 65.46x | 1.68x |
| smaenvelope | 75,480 | 0.93x | --- | --- |
| stddev | 28,218 | 1.34x | --- | --- |
| stoch | 174,305 | 0.81x | 40.20x | 13.72x |
| stochrsi | 139,586 | 0.70x | 107.76x | --- |
| supersmoother | 27,864 | 1.92x | --- | --- |
| supertrend | 36,431 | 1.73x | --- | --- |
| tema | 30,503 | 1.21x | --- | 10.37x |
| trendmode | 248,410 | 3.60x | --- | --- |
| trima | 28,644 | 1.08x | --- | 3.03x |
| trix | 29,436 | 1.39x | 101.82x | 10.20x |
| trvi | 37,439 | 1.05x | --- | --- |
| tsf | 26,792 | 1.45x | --- | --- |
| ultosc | 55,289 | 1.41x | --- | --- |
| vhf | 140,792 | 0.41x | --- | --- |
| vidya | 64,413 | 1.00x | --- | --- |
| volatility | 59,719 | 0.94x | --- | --- |
| vortex | 48,552 | 1.70x | --- | 26.52x |
| vosc | 29,054 | 1.03x | --- | --- |
| vwma | 27,043 | 1.33x | --- | 4.67x |
| wilders | 24,369 | 1.24x | 23.35x | 6.59x |
| willr | 117,239 | 0.68x | 55.70x | 28.89x |
| wma | 22,974 | 1.73x | 636.68x | --- |
| zlema | 21,404 | 1.44x | --- | --- |
Reference: tulip_rs_ffi_c — the extern "C" FFI binding's own SIMD pass. Competitor speedups are computed as 4x the competitor's average single-call time,
since these libraries have no SIMD-equivalent batched mode.
| Indicator | SIMD 4-Options (ns) | Speedup vs tulip_rs_ffi_c | Speedup vs C_tulip | Speedup vs TA-Lib |
|---|---|---|---|---|
| adosc | 10,921 | 2.08x | 3.29x | 3.13x |
| adx | 16,961 | 2.55x | 2.34x | 9.00x |
| adxr | 25,063 | 2.14x | 2.09x | 6.27x |
| apo | 9,422 | 2.07x | 3.68x | 4.40x |
| aroon | 88,659 | 0.78x | 3.62x | 1.74x |
| aroonosc | 91,629 | 0.87x | 3.58x | 1.57x |
| atr | 9,888 | 1.95x | 4.30x | 10.83x |
| bbands | 38,420 | 0.76x | 0.74x | 2.03x |
| ccfisher | 278,860 | 3.27x | --- | --- |
| cci | 119,598 | 2.63x | 2.47x | 3.74x |
| chaikinmf | 20,576 | 1.86x | --- | --- |
| chandelierexit | 84,549 | 0.82x | --- | --- |
| cmo | 12,290 | 2.22x | 2.15x | 8.44x |
| cvi | 14,810 | 1.32x | 3.81x | --- |
| cybercycle | 20,313 | 3.29x | --- | --- |
| dema | 10,316 | 2.25x | 2.49x | 8.65x |
| di | 20,290 | 3.49x | 1.94x | 11.23x |
| dm | 16,635 | 2.17x | 1.44x | --- |
| donchianchannel | 170,730 | 0.31x | 1.15x | --- |
| dpo | 13,096 | 0.76x | 0.74x | --- |
| dx | 15,476 | 2.54x | 1.94x | 9.80x |
| ef | 11,343 | 1.70x | --- | --- |
| elderray | 18,125 | 1.34x | 2.36x | --- |
| ema | 8,411 | 2.28x | 5.08x | 5.06x |
| fisher | 248,277 | 0.98x | 1.25x | --- |
| fosc | 11,893 | 2.77x | 3.15x | --- |
| highpass | 10,052 | 1.92x | --- | --- |
| hma | 22,868 | 1.51x | 1.65x | --- |
| ichimoku | 433,661 | 0.68x | --- | --- |
| kama | 13,211 | 2.12x | 2.54x | 3.24x |
| keltnerchannel | 74,249 | 0.36x | --- | --- |
| kvo | 18,364 | 1.98x | 1.94x | --- |
| linreg | 11,312 | 2.57x | 3.14x | 20.15x |
| macd | 73,060 | 0.35x | 0.68x | 1.88x |
| mama | 256,314 | 3.43x | --- | 3.50x |
| mass | 12,277 | 1.86x | 3.86x | --- |
| max | 32,986 | 0.72x | 2.44x | 1.28x |
| md | 61,517 | 0.99x | 1.03x | --- |
| mfi | 18,381 | 1.89x | 2.58x | 2.14x |
| min | 50,998 | 0.52x | 2.15x | 1.15x |
| mom | 3,487 | 0.91x | 0.85x | 0.88x |
| msw | 142,929 | 3.63x | 18.64x | --- |
| natr | 11,130 | 2.02x | 3.82x | 9.61x |
| pivotpoint | 414 | 0.85x | --- | --- |
| ppo | 10,879 | 2.03x | 3.42x | 5.23x |
| psar | 54,401 | 0.79x | 0.75x | 0.63x |
| qstick | 10,651 | 0.98x | 0.95x | --- |
| roc | 10,619 | 0.92x | 0.89x | 1.79x |
| rocr | 10,838 | 0.90x | 0.87x | 1.74x |
| roofingfilter | 12,231 | 3.52x | --- | --- |
| rsi | 10,686 | 2.00x | 4.58x | 9.67x |
| sma | 10,017 | 0.99x | 0.94x | 1.87x |
| smaenvelope | 22,795 | 1.23x | --- | --- |
| stddev | 15,491 | 1.86x | 1.84x | 4.28x |
| stoch | 120,646 | 0.72x | 3.05x | 1.77x |
| stochrsi | 114,567 | 0.67x | 1.18x | 1.75x |
| supersmoother | 13,151 | 3.27x | --- | --- |
| supertrend | 22,278 | 2.14x | --- | --- |
| tema | 9,332 | 2.91x | 2.82x | 14.18x |
| trendmode | 226,222 | 3.89x | --- | --- |
| trima | 16,773 | 1.28x | 1.70x | 1.69x |
| trix | 11,137 | 2.42x | 3.83x | 13.08x |
| trvi | 16,206 | 1.42x | --- | --- |
| tsf | 11,108 | 2.50x | 3.27x | 20.79x |
| ultosc | 38,532 | 1.61x | 1.60x | 4.74x |
| vhf | 105,089 | 0.51x | 1.89x | --- |
| vidya | 39,572 | 1.22x | 1.91x | --- |
| volatility | 22,328 | 2.17x | 3.20x | --- |
| vortex | 24,609 | 1.29x | --- | --- |
| vosc | 13,739 | 1.41x | 1.40x | --- |
| vwma | 16,631 | 1.16x | 1.14x | --- |
| wilders | 9,181 | 2.09x | 4.63x | --- |
| willr | 96,195 | 0.61x | 3.44x | 1.73x |
| wma | 9,924 | 1.94x | 3.35x | 1.92x |
| zlema | 10,080 | 2.38x | 3.29x | --- |
Reference: tulip_rs_go — the cgo binding's own SIMD pass. Competitor speedups are computed as 4x the competitor's average single-call time, since these libraries have no SIMD-equivalent batched mode.
| Indicator | SIMD 4-Options (ns) | Speedup vs tulip_rs_go | Speedup vs cinar |
|---|---|---|---|
| adosc | 13,447 | 1.97x | 6890.53x |
| adx | 19,063 | 2.46x | --- |
| adxr | 27,189 | 2.14x | --- |
| apo | 12,599 | 1.73x | 1638.93x |
| aroon | 116,412 | 0.62x | 474.08x |
| aroonosc | 94,614 | 0.89x | --- |
| atr | 14,286 | 1.53x | 4707.47x |
| bbands | 86,052 | 0.47x | 922.21x |
| ccfisher | 306,878 | 2.99x | --- |
| cci | 124,137 | 2.56x | 1066.96x |
| chaikinmf | 26,783 | 1.52x | 3379.68x |
| chandelierexit | 117,227 | 0.62x | 808.91x |
| cmo | 15,978 | 1.87x | --- |
| cvi | 18,234 | 1.25x | --- |
| cybercycle | 26,055 | 2.66x | --- |
| dema | 13,371 | 1.92x | 4374.80x |
| di | 50,425 | 1.53x | --- |
| dm | 46,149 | 0.84x | --- |
| donchianchannel | 166,142 | 0.34x | 453.30x |
| dpo | 18,204 | 0.68x | 4167.70x |
| dx | 19,708 | 2.17x | --- |
| ef | 17,180 | 1.27x | --- |
| elderray | 49,393 | 0.60x | 1312.39x |
| ema | 12,979 | 1.68x | 1007.85x |
| fisher | 284,345 | 0.90x | 474.65x |
| fosc | 17,443 | 2.03x | --- |
| highpass | 14,396 | 1.51x | --- |
| hilberttransform | 58,154 | 1.03x | --- |
| hma | 27,256 | 1.37x | 2709.30x |
| ichimoku | 438,802 | 0.71x | --- |
| kama | 18,937 | 1.61x | 6162.80x |
| keltnerchannel | 85,846 | 0.39x | --- |
| kvo | 20,781 | 1.97x | --- |
| linreg | 15,993 | 1.97x | --- |
| macd | 83,577 | 0.39x | --- |
| mama | 287,259 | 3.08x | --- |
| mass | 17,311 | 1.54x | --- |
| max | 40,578 | 0.66x | 1247.65x |
| md | 63,277 | 1.01x | --- |
| mfi | 20,631 | 1.89x | 4747.94x |
| min | 55,331 | 0.53x | 801.90x |
| mom | 5,163 | 1.14x | --- |
| msw | 147,098 | 3.57x | --- |
| natr | 15,201 | 1.65x | --- |
| pivotpoint | 2,149 | 1.37x | --- |
| ppo | 14,594 | 1.69x | 6231.71x |
| psar | 56,346 | 0.82x | --- |
| qstick | 12,204 | 1.06x | 5128.06x |
| roc | 13,720 | 0.88x | 1064.55x |
| rocr | 13,776 | 0.89x | --- |
| roofingfilter | 14,646 | 3.11x | --- |
| rsi | 14,751 | 1.63x | 6047.81x |
| sma | 14,127 | 0.87x | 3087.15x |
| smaenvelope | 80,564 | 0.43x | 994.29x |
| stddev | 17,092 | 1.82x | 1985.17x |
| stoch | 124,809 | 0.73x | 587.16x |
| stochrsi | 132,118 | 0.62x | --- |
| supersmoother | 15,947 | 2.85x | --- |
| supertrend | 24,497 | 2.20x | 5734.02x |
| tema | 13,375 | 2.22x | 7854.61x |
| trendmode | 228,567 | 3.87x | --- |
| trima | 18,514 | 1.30x | 3721.27x |
| trix | 14,247 | 2.07x | 5908.50x |
| trvi | 19,611 | 1.35x | --- |
| tsf | 13,819 | 2.18x | --- |
| ultosc | 40,488 | 1.59x | 3350.53x |
| vhf | 109,841 | 0.52x | --- |
| vidya | 41,392 | 1.23x | --- |
| volatility | 24,190 | 2.12x | --- |
| vortex | 30,504 | 1.19x | --- |
| vosc | 15,318 | 1.42x | --- |
| vwma | 18,487 | 1.18x | 4262.61x |
| wilders | 12,066 | 1.80x | 636.36x |
| willr | 98,145 | 0.63x | 1002.19x |
| wma | 14,953 | 1.45x | 1228.89x |
| zlema | 14,277 | 1.86x | --- |
Notable results - by_options
52 of 75 indicators (69%) show a SIMD speedup over 4x sequential calls. Median speedup for benefiting indicators: ~2.02x.
| Category | Indicator | SIMD Speedup |
|---|---|---|
| Top performers | trendmode |
3.85x |
| Top performers | msw |
3.54x |
| Top performers | roofingfilter |
3.52x |
| Top performers | mama |
3.50x |
| Top performers | di |
3.48x |
| Top performers | ccfisher |
3.26x |
| Top performers | cybercycle |
3.15x |
| Top performers | supersmoother |
3.12x |
| Top performers | tema |
2.86x |
| Notable improvement | msw |
3.54x (SDFT optimisation) |
| SIMD slower than sequential | donchianchannel |
0.44x |
| SIMD slower than sequential | psar |
0.56x |
| SIMD slower than sequential | vhf |
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.
67 of 75 indicators (89%) show a SIMD speedup over 4x sequential calls. Median speedup for benefiting indicators: ~2.00x.
| Category | Indicator | SIMD Speedup |
|---|---|---|
| Top performers | natr |
5.29x |
| Top performers | dx |
5.28x |
| Top performers | di |
5.24x |
| Top performers | trix |
5.14x |
| Top performers | kama |
4.73x |
| Top performers | supertrend |
4.60x |
| Top performers | linreg |
4.22x |
| Top performers | trendmode |
3.87x |
| Top performers | kvo |
3.86x |
| Notable improvement | msw |
3.61x (SDFT optimisation) |
| SIMD slower than sequential | vhf |
0.63x |
| SIMD slower than sequential | donchianchannel |
0.65x |
| SIMD slower than sequential | dpo |
0.66x |
| SIMD slower than sequential | trvi |
0.79x |
Indicators that don't benefit tend to involve complex branching or irregular memory access patterns that prevent effective vectorisation.
54 of 75 indicators (72%) show a SIMD speedup over 4x sequential calls. Median speedup for benefiting indicators: ~1.37x.
| Category | Indicator | SIMD Speedup |
|---|---|---|
| Top performers | trendmode |
3.60x |
| Top performers | msw |
3.39x |
| Top performers | mama |
3.34x |
| Top performers | ccfisher |
3.14x |
| Top performers | cybercycle |
2.27x |
| Top performers | cci |
2.25x |
| Top performers | di |
2.13x |
| Top performers | supersmoother |
1.92x |
| Top performers | adxr |
1.78x |
| Notable improvement | msw |
3.39x (SDFT optimisation) |
| SIMD slower than sequential | vhf |
0.41x |
| SIMD slower than sequential | donchianchannel |
0.62x |
| SIMD slower than sequential | psar |
0.68x |
| SIMD slower than sequential | willr |
0.68x |
Indicators that don't benefit tend to involve complex branching or irregular memory access patterns that prevent effective vectorisation.
51 of 75 indicators (68%) show a SIMD speedup over 4x sequential calls. Median speedup for benefiting indicators: ~2.09x.
| Category | Indicator | SIMD Speedup |
|---|---|---|
| Top performers | trendmode |
3.89x |
| Top performers | msw |
3.63x |
| Top performers | roofingfilter |
3.52x |
| Top performers | di |
3.49x |
| Top performers | mama |
3.43x |
| Top performers | cybercycle |
3.29x |
| Top performers | ccfisher |
3.27x |
| Top performers | supersmoother |
3.27x |
| Top performers | tema |
2.91x |
| Notable improvement | msw |
3.63x (SDFT optimisation) |
| SIMD slower than sequential | donchianchannel |
0.31x |
| SIMD slower than sequential | macd |
0.35x |
| SIMD slower than sequential | keltnerchannel |
0.36x |
| SIMD slower than sequential | vhf |
0.51x |
Indicators that don't benefit tend to involve complex branching or irregular memory access patterns that prevent effective vectorisation.
53 of 76 indicators (70%) show a SIMD speedup over 4x sequential calls. Median speedup for benefiting indicators: ~1.73x.
| Category | Indicator | SIMD Speedup |
|---|---|---|
| Top performers | trendmode |
3.87x |
| Top performers | msw |
3.57x |
| Top performers | roofingfilter |
3.11x |
| Top performers | mama |
3.08x |
| Top performers | ccfisher |
2.99x |
| Top performers | supersmoother |
2.85x |
| Top performers | cybercycle |
2.66x |
| Top performers | cci |
2.56x |
| Top performers | adx |
2.46x |
| Notable improvement | msw |
3.57x (SDFT optimisation) |
| SIMD slower than sequential | donchianchannel |
0.34x |
| SIMD slower than sequential | keltnerchannel |
0.39x |
| SIMD slower than sequential | macd |
0.39x |
| SIMD slower than sequential | smaenvelope |
0.43x |
Indicators that don't benefit tend to involve complex branching or irregular memory access patterns that prevent effective vectorisation.