Real-world performance comparisons between tidy-ts and other data manipulation libraries. See how tidy-ts performs across different operations and dataset sizes.
Rust + WASM: tidy-ts achieves near-native performance through Rust's zero-cost abstractions and WASM's direct memory access, often performing within 2-3x of native libraries while maintaining TypeScript's developer experience.
| TS / JS | TS / JS | Python | Python | R | |
|---|---|---|---|---|---|
| Operation | tidy-ts | Arquero | Pandas | Polars | dplyr |
| creation (ms) | 116(1×) | 38(0.3×) | 757(6.5×) | 10(0.1×) | 0(0×) |
| filter (ms) | 13(1×) | 12(0.9×) | 3(0.2×) | 1(0.04×) | 6(0.4×) |
| mutate (ms) | 2(1×) | 3(1.7×) | 3(1.7×) | 0(0.05×) | 1(0.4×) |
| sort (ms) | 119(1×) | 343(2.9×) | 212(1.8×) | 56(0.5×) | 26(0.2×) |
| distinct (ms) | 108(1×) | 616(5.7×) | 55(0.5×) | 15(0.1×) | 16(0.2×) |
| innerJoin (ms) | 66(1×) | 296(4.5×) | 47(0.7×) | 15(0.2×) | 490(7.4×) |
| leftJoin (ms) | 50(1×) | 400(8×) | 56(1.1×) | 17(0.3×) | 912(18.2×) |
| outerJoin (ms) | 99(1×) | 1245(12.6×) | 66(0.7×) | 33(0.3×) | 807(8.2×) |
| pivotLonger (ms) | 246(1×) | 287(1.2×) | 64(0.3×) | 9(0.04×) | 39(0.2×) |
| pivotWider (ms) | 4(1×) | 4(1×) | 9(2.5×) | 4(1×) | 3(0.8×) |
| summarize (ms) | 64(1×) | 41(0.64×) | 8(0.13×) | 2(0.04×) | 8(0.12×) |