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,427,665 | 102,505,127 | N/A | 42.22x | --- |
ad |
9,984 | 205,547 | 42,784 | 20.59x | 4.29x |
adaptivemsw |
537,794 | N/A | N/A | --- | --- |
adosc |
8,949 | N/A | N/A | --- | --- |
adx |
14,263 | 1,215,328 | N/A | 85.21x | --- |
adxr |
20,018 | N/A | N/A | --- | --- |
ao |
8,688 | 1,081,898 | 29,900 | 124.52x | 3.44x |
apo |
7,063 | N/A | 42,761 | --- | 6.05x |
aroon |
29,211 | N/A | 726,118 | --- | 24.86x |
aroonosc |
25,646 | N/A | N/A | --- | --- |
atr |
8,952 | 398,175 | 255,429 | 44.48x | 28.53x |
avgprice |
5,511 | N/A | N/A | --- | --- |
bbands |
14,379 | 5,917,073 | 294,652 | 411.52x | 20.49x |
bop |
6,125 | N/A | 17,489 | --- | 2.86x |
ccfisher |
235,246 | N/A | N/A | --- | --- |
cci |
84,509 | 4,845,108 | 67,713 | 57.33x | 0.80x |
chaikinmf |
11,835 | N/A | 54,135 | --- | 4.57x |
chandelierexit |
25,641 | N/A | 1,010,519 | --- | 39.41x |
cmo |
8,793 | N/A | N/A | --- | --- |
cvi |
8,286 | N/A | N/A | --- | --- |
cybercycle |
18,953 | N/A | N/A | --- | --- |
dema |
7,934 | N/A | 47,165 | --- | 5.94x |
di |
27,118 | N/A | N/A | --- | --- |
dm |
16,554 | N/A | N/A | --- | --- |
donchianchannel |
21,100 | N/A | 811,376 | --- | 38.45x |
dpo |
5,597 | N/A | N/A | --- | --- |
dx |
11,921 | N/A | N/A | --- | --- |
ef |
6,910 | N/A | N/A | --- | --- |
elderray |
17,084 | N/A | N/A | --- | --- |
ema |
6,948 | 148,524 | 20,371 | 21.38x | 2.93x |
emv |
5,920 | N/A | 56,421 | --- | 9.53x |
fisher |
73,506 | N/A | N/A | --- | --- |
fosc |
38,742 | N/A | N/A | --- | --- |
highpass |
6,714 | N/A | N/A | --- | --- |
hilberttransform |
21,797 | N/A | N/A | --- | --- |
hma |
11,065 | N/A | N/A | --- | --- |
homodynediscriminator |
220,588 | N/A | N/A | --- | --- |
ichimoku |
87,035 | 4,162,843 | N/A | 47.83x | --- |
instantaneoustrendline |
225,232 | N/A | N/A | --- | --- |
kama |
9,462 | N/A | N/A | --- | --- |
keltnerchannel |
17,032 | N/A | 282,962 | --- | 16.61x |
kvo |
11,855 | N/A | N/A | --- | --- |
linreg |
9,435 | N/A | N/A | --- | --- |
macd |
17,948 | 621,042 | 60,969 | 34.60x | 3.40x |
mama |
227,367 | N/A | N/A | --- | --- |
marketfi |
6,766 | N/A | N/A | --- | --- |
mass |
8,845 | N/A | N/A | --- | --- |
max |
11,508 | N/A | 561,391 | --- | 48.78x |
md |
18,427 | N/A | N/A | --- | --- |
medprice |
5,538 | N/A | N/A | --- | --- |
mfi |
12,680 | 1,932,480 | 263,645 | 152.41x | 20.79x |
min |
14,148 | N/A | 503,547 | --- | 35.59x |
mom |
5,173 | N/A | N/A | --- | --- |
msw |
137,983 | N/A | N/A | --- | --- |
natr |
8,569 | N/A | N/A | --- | --- |
nvi |
5,651 | N/A | 26,940 | --- | 4.77x |
obv |
6,801 | 189,363 | 19,665 | 27.84x | 2.89x |
pivotpoint |
2,110 | N/A | N/A | --- | --- |
ppo |
8,008 | N/A | 79,927 | --- | 9.98x |
psar |
12,955 | 225,375 | 45,925 | 17.40x | 3.54x |
pvi |
5,945 | N/A | N/A | --- | --- |
qstick |
6,110 | N/A | 16,838 | --- | 2.76x |
roc |
6,611 | 591,026 | 14,099 | 89.40x | 2.13x |
rocr |
5,191 | N/A | N/A | --- | --- |
roofingfilter |
12,982 | N/A | N/A | --- | --- |
rsi |
7,696 | 919,797 | 108,653 | 119.51x | 14.12x |
sma |
6,208 | 438,395 | 13,458 | 70.61x | 2.17x |
smaenvelope |
15,370 | N/A | N/A | --- | --- |
stddev |
9,223 | N/A | N/A | --- | --- |
stoch |
34,491 | 1,792,464 | 592,336 | 51.97x | 17.17x |
stochrsi |
23,124 | 3,799,361 | N/A | 164.30x | --- |
supersmoother |
12,706 | N/A | N/A | --- | --- |
supertrend |
15,846 | N/A | N/A | --- | --- |
tema |
9,321 | N/A | 77,890 | --- | 8.36x |
tr |
7,093 | N/A | 248,333 | --- | 35.01x |
trendmode |
221,588 | N/A | N/A | --- | --- |
trima |
8,353 | N/A | 22,760 | --- | 2.72x |
trix |
9,541 | 704,720 | 75,803 | 73.87x | 7.95x |
trvi |
8,880 | N/A | N/A | --- | --- |
tsf |
9,131 | N/A | N/A | --- | --- |
typprice |
5,915 | N/A | 17,684 | --- | 2.99x |
ultosc |
17,418 | N/A | N/A | --- | --- |
vhf |
16,579 | N/A | N/A | --- | --- |
vidya |
14,794 | N/A | N/A | --- | --- |
volatility |
13,909 | N/A | N/A | --- | --- |
vortex |
20,929 | N/A | 306,157 | --- | 14.63x |
vosc |
7,345 | N/A | N/A | --- | --- |
vwap |
9,973 | 252,891 | N/A | 25.36x | --- |
vwma |
7,850 | N/A | 28,340 | --- | 3.61x |
wad |
6,972 | N/A | N/A | --- | --- |
wcprice |
5,446 | N/A | N/A | --- | --- |
wilders |
7,562 | 120,444 | 40,009 | 15.93x | 5.29x |
willr |
19,166 | 1,451,408 | 824,585 | 75.73x | 43.02x |
wma |
9,592 | 3,653,176 | N/A | 380.84x | --- |
zlema |
7,890 | 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: 57.33x vs technicalindicators
Median speedup: 7.00x vs indicatorts
Largest wins vs technicalindicators (pure JS, loop-heavy implementations):
| Indicator | Speedup vs technicalindicators |
|---|---|
bbands |
411.52x |
wma |
380.84x |
stochrsi |
164.30x |
mfi |
152.41x |
ao |
124.52x |
rsi |
119.51x |
roc |
89.40x |
adx |
85.21x |
willr |
75.73x |
trix |
73.87x |
Largest wins vs indicatorts (pure TypeScript):
| Indicator | Speedup vs indicatorts |
|---|---|
max |
48.78x |
willr |
43.02x |
chandelierexit |
39.41x |
donchianchannel |
38.45x |
min |
35.59x |
tr |
35.01x |
atr |
28.53x |
aroon |
24.86x |
mfi |
20.79x |
bbands |
20.49x |
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 |
|---|---|---|---|
avgprice |
1,433 | 5,511 | ~3.8× |
tr |
1,501 | 7,093 | ~4.7× |
wcprice |
1,062 | 5,446 | ~5.1× |
typprice |
1,036 | 5,915 | ~5.7× |
mom |
897 | 5,173 | ~5.8× |
medprice |
872 | 5,538 | ~6.4× |