Repository navigation
Performance Benchmarks
TehPig edited this page Jun 7, 2026
·
1 revision
This document provides a highly detailed review and performance benchmark comparison between the legacy TypeScript/Node.js implementation of the RPC client and the newly compiled native Rust rewrite.
The following benchmarks are measured on a standard mid-range desktop environment (Windows 11, Intel Core i7 / AMD Ryzen 5, 16GB RAM) under identical conditions:
| Metric | Legacy TypeScript Version | Native Rust Version | Performance Improvement |
|---|---|---|---|
| Executable Binary Size | ~42.3 MB | ~2.8 MB | ~93.4% smaller |
| Startup / Boot Time | ~1.8 seconds | ~45 milliseconds | ~97.5% faster |
| Idle Memory (RAM) | ~48.0 MB | ~4.2 MB | ~91.2% reduction |
| Active Memory (60 FPS Viz) | ~86.0 MB | ~6.8 MB | ~92.0% reduction |
| Idle CPU Usage (No tabs open) | ~0.5% - 1.2% | 0.00% (Suspended) | 100.0% reduction |
| Active CPU Usage (60 FPS Viz) | ~8.0% - 14.0% | ~0.3% - 0.8% | ~94.0% reduction |
-
The Runtime Overhead: The TypeScript version had to be packaged into a standalone binary using
pkg. This meant compiling the entire Node.js runtime (V8 engine) into the executable, leading to a bulky 40MB+ file. - Event Loop Bottlenecks: JavaScript is strictly single-threaded. During active visualizer sessions, performing high-frequency Fast Fourier Transforms (FFT) on audio frames competed directly with the WebSocket broadcast loop and Discord IPC pipelines on the main thread, occasionally leading to visible micro-stutters or delayed track updates.
- Garbage Collector Churn: Pushing float arrays (audio bands) through JavaScript array buffers to WS sockets caused constant memory allocation and Garbage Collection (GC) sweeps in the V8 engine, keeping CPU baselines high.
- Zero-Runtime Compilation: The Rust client compiles directly to optimized native machine code. It has zero external runtime or framework requirements, executing instantly with a 3MB footprint.
-
True Multithreaded Concurrency: Leverages an efficient native thread architecture:
- Tokio Runtime: Manages HTTP requests and WebSocket clients asynchronously.
- Audio Thread: An isolated, real-time scheduled CPU thread managing native audio captures via CPAL (WASAPI/ALSA loopback).
- Processor Thread: A dedicated CPU worker thread executing ultra-fast vector math (FFT) via rustfft with zero-copy buffer sharing.
- SIMD Vector Optimization: Rust compiles FFT operations into native CPU SIMD (Single Instruction, Multiple Data) processor instructions, allowing thousands of floating-point audio calculations to execute in a single CPU cycle.
-
Smart Thread Suspension: Real-time broadcast receiver-tracking automatically suspends the audio capture loop and blocks the processor thread cleanly when no web pages are open, dropping background CPU usage to a absolute
0%.