Skip to content

Standard Performance: Node

Competitors: technicalindicators (anandanand84) and indicatorts (Onur Cinar), called via the tulip_rs_node napi-rs binding.

Only indicators where at least one reference library ran are shown; the remaining indicators have tulip_rs_node timings in the database but no JS competitor to compare against.

Indicator tulip_rs_node (ns) technicalindicators (ns) indicatorts (ns) Speedup vs technicalindicators Speedup vs indicatorts
Rust_Candlestick 2,457,006 102,727,178 N/A 41.81x ---
ad 9,742 221,962 46,137 22.78x 4.74x
adaptivemsw 538,288 N/A N/A --- ---
adosc 9,588 N/A N/A --- ---
adx 13,903 1,335,314 N/A 96.04x ---
adxr 20,738 N/A N/A --- ---
ao 9,156 1,244,698 35,345 135.94x 3.86x
apo 8,088 N/A 45,958 --- 5.68x
aroon 28,654 N/A 748,174 --- 26.11x
aroonosc 25,469 N/A N/A --- ---
atr 8,854 420,852 269,633 47.53x 30.45x
avgprice 7,315 N/A N/A --- ---
bbands 19,638 6,263,971 297,777 318.96x 15.16x
bop 6,083 N/A 17,799 --- 2.93x
ccfisher 234,188 N/A N/A --- ---
cci 85,143 4,828,772 66,237 56.71x 0.78x
chaikinmf 12,934 N/A 54,769 --- 4.23x
chandelierexit 26,367 N/A 1,013,729 --- 38.45x
cmo 9,786 N/A N/A --- ---
cvi 8,458 N/A N/A --- ---
cybercycle 18,939 N/A N/A --- ---
dema 7,941 N/A 46,417 --- 5.85x
di 26,977 N/A N/A --- ---
dm 16,909 N/A N/A --- ---
donchianchannel 20,643 N/A 812,212 --- 39.34x
dpo 5,706 N/A N/A --- ---
dx 12,292 N/A N/A --- ---
ef 6,905 N/A N/A --- ---
elderray 16,523 N/A N/A --- ---
ema 7,776 148,191 20,066 19.06x 2.58x
emv 6,373 N/A 58,833 --- 9.23x
fisher 73,225 N/A N/A --- ---
fosc 11,070 N/A N/A --- ---
highpass 6,767 N/A N/A --- ---
hilberttransform 23,052 N/A N/A --- ---
hma 10,718 N/A N/A --- ---
homodynediscriminator 222,197 N/A N/A --- ---
ichimoku 88,174 4,309,914 N/A 48.88x ---
instantaneoustrendline 227,481 N/A N/A --- ---
kama 9,363 N/A N/A --- ---
keltnerchannel 17,919 N/A 287,262 --- 16.03x
kvo 12,136 N/A N/A --- ---
linreg 9,569 N/A N/A --- ---
macd 18,062 613,508 60,574 33.97x 3.35x
mama 229,339 N/A N/A --- ---
marketfi 5,829 N/A N/A --- ---
mass 9,920 N/A N/A --- ---
max 10,875 N/A 565,883 --- 52.04x
md 18,204 N/A N/A --- ---
medprice 5,559 N/A N/A --- ---
mfi 13,108 2,029,243 260,847 154.82x 19.90x
min 15,192 N/A 508,306 --- 33.46x
mom 4,933 N/A N/A --- ---
msw 139,723 N/A N/A --- ---
natr 8,667 N/A N/A --- ---
nvi 5,726 N/A 27,049 --- 4.72x
obv 6,246 202,455 19,595 32.41x 3.14x
pivotpoint 2,110 N/A N/A --- ---
ppo 8,388 N/A 79,044 --- 9.42x
psar 13,074 228,654 45,987 17.49x 3.52x
pvi 5,904 N/A N/A --- ---
qstick 6,191 N/A 15,342 --- 2.48x
roc 6,340 636,450 13,274 100.39x 2.09x
rocr 5,201 N/A N/A --- ---
roofingfilter 12,730 N/A N/A --- ---
rsi 7,704 925,453 106,422 120.13x 13.81x
sma 7,236 446,865 11,484 61.76x 1.59x
smaenvelope 17,488 N/A N/A --- ---
stddev 9,417 N/A N/A --- ---
stoch 35,065 1,751,739 597,798 49.96x 17.05x
stochrsi 24,315 3,760,612 N/A 154.66x ---
supersmoother 13,341 N/A N/A --- ---
supertrend 15,712 N/A N/A --- ---
tema 9,248 N/A 79,095 --- 8.55x
tr 5,899 N/A 236,416 --- 40.08x
trendmode 223,486 N/A N/A --- ---
trima 7,753 N/A 21,687 --- 2.80x
trix 10,147 749,326 75,056 73.85x 7.40x
trvi 9,863 N/A N/A --- ---
tsf 9,735 N/A N/A --- ---
typprice 6,193 N/A 17,658 --- 2.85x
ultosc 19,501 N/A N/A --- ---
vhf 14,271 N/A N/A --- ---
vidya 15,135 N/A N/A --- ---
volatility 14,059 N/A N/A --- ---
vortex 20,575 N/A 321,910 --- 15.65x
vosc 7,455 N/A N/A --- ---
vwap 8,493 300,247 N/A 35.35x ---
vwma 8,987 N/A 31,576 --- 3.51x
wad 7,246 N/A N/A --- ---
wcprice 6,609 N/A N/A --- ---
wilders 7,512 142,229 40,152 18.93x 5.35x
willr 19,799 1,632,541 846,616 82.45x 42.76x
wma 9,861 3,656,746 N/A 370.83x ---
zlema 7,704 N/A N/A --- ---
Notable results

tulip_rs_node beats every JS competitor on 23 compared indicators against technicalindicators and 36 compared indicators against indicatorts. Median speedup: 56.71x vs technicalindicators Median speedup: 6.62x vs indicatorts

Largest wins vs technicalindicators (pure JS, loop-heavy implementations):

Indicator Speedup vs technicalindicators
wma 370.83x
bbands 318.96x
mfi 154.82x
stochrsi 154.66x
ao 135.94x
rsi 120.13x
roc 100.39x
adx 96.04x
willr 82.45x
trix 73.85x

Largest wins vs indicatorts (pure TypeScript):

Indicator Speedup vs indicatorts
max 52.04x
willr 42.76x
tr 40.08x
donchianchannel 39.34x
chandelierexit 38.45x
min 33.46x
atr 30.45x
aroon 26.11x
mfi 19.90x
stoch 17.05x

nAPI boundary overhead — the gap between Rust native and tulip_rs_node columns reflects the fixed per-call cost of the nAPI boundary (argument marshalling, Float64Array handoff), roughly 4–6 µs for the fastest-running indicators:

Indicator Rust native (ns) tulip_rs_node (ns) Overhead
tr 1,393 5,899 ~4.2×
avgprice 1,433 7,315 ~5.1×
mom 897 4,933 ~5.5×
typprice 1,086 6,193 ~5.7×
wcprice 1,075 6,609 ~6.1×
medprice 872 5,559 ~6.4×