Benchmarks
Every model variant in the React Native ExecuTorch registry is measured directly on physical iOS and Android hardware. We profile the complete end-to-end pipeline—from camera frames, audio, and text through pre-processing, forward inference on mobile silicon, and post-processing—alongside isolated ExecuTorch runtime latency, peak RAM, cold-start load times, and binary download sizes.
Backends and Precision
Each variant is defined by two choices:
- Backend (Where it runs): The hardware execution engine. XNNPACK runs on mobile CPUs for universal compatibility across iOS and Android; Core ML targets the Apple Neural Engine (NPU) and GPU on iOS; Vulkan runs on Android GPUs; and MLX uses Apple Silicon unified memory. To configure which backends are compiled into your app, see Native Libraries.
- Precision (How weights are stored): The numerical format of model weights. Full precision (
fp32) preserves original fidelity at the cost of larger downloads and RAM. Quantized formats (fp16,int8,4-bit) compress weights, drastically cutting file size and memory while speeding up compute with minimal impact on real-world accuracy. See Exporting Custom Models for lowering details.
Explore the charts below to compare backends and find the optimal balance for your app.
Devices
Measurements were collected on physical iOS and Android devices spanning flagship, modern mid-tier, and legacy hardware tiers. All numbers come from release builds of React Native ExecuTorch 0.11.0-dev (main shortly after v0.10.0), measured in September 2026.
| Device | Backends tested | Variants | Notes |
|---|---|---|---|
| Samsung Galaxy S26 Ultra | XNNPACK (123), Vulkan (24) | 147 | Flagship Android test device (Snapdragon SM8850); covers all standard tasks and 23 LLM variants |
| Google Pixel 10 | XNNPACK (100), Vulkan (24) | 124 | Modern Android device featuring Google Tensor G5 |
| Samsung Galaxy S20+ | XNNPACK (100), Vulkan (24) | 124 | Baseline Android device (Exynos 990) representing older generation hardware |
| iPhone 17 | XNNPACK (100), Core ML (75), MLX (15) | 190 | Flagship iOS reference device (A19) testing XNNPACK, Core ML, and MLX execution |
| iPhone SE (3rd gen) | XNNPACK (99), Core ML (73), MLX (15) | 187 | Compact iOS hardware (A15 Bionic) with 4 GB RAM to test performance and memory bounds |
Results
These benchmarks measure execution latency, memory utilization, and initialization times. Quantized models (such as int8 or 8da4w) significantly reduce memory footprint and download size while accelerating inference, but should always be evaluated for task accuracy on your specific application datasets. Run-to-run variations on physical mobile devices are common due to background system tasks and dynamic thermal management.
Image Classification
- Input: 512x512 RGBA frame (synthetic test image: vertical color gradient with three solid ellipses).
- Pipeline Structure: The preprocessor resizes the raw image buffer to the model's input dimensions
[1, 3, H, W](usingstretchmode for EfficientNet-V2-S), converts format layout to channels-first[3, H, W], and normalizes pixel values. Post-processing appliessoftmaxover output logits, maps confidence scores to ImageNet-1K class labels, and sorts the predictions by confidence.
Object Detection
- Input: 640x640 RGBA frame (vertical color gradient with three solid ellipses).
- Pipeline Structure: Preprocessing resizes or letterboxes the input frame into the model's expected dimensions
[1, 3, H, W](ranging from 320x320 for SSDLite to 384x384, 512x512, or 640x640 across YOLO26 and RF-DETR variants). The model outputs candidate bounding boxes[N, 4], confidence scores[N], and class indices[N]. Post-processing executes Non-Maximum Suppression (NMS) to eliminate overlapping detections, maps class indices to COCO labels, and decodes and scales bounding boxes back to the original image dimensions.
Instance Segmentation
- Input: 640x640 RGBA frame.
- Pipeline Structure: Preprocessing resizes the input buffer to the model's input shape
[1, 3, H, W](ranging from 384x384 to 640x640 across FastSAM, YOLO26, and RF-DETR variants). The model outputs candidate boxes[N, 4], confidence scores[N], class indices[N], and prototype mask logits[N, MH, MW]. Post-processing runs NMS on boxes, then for each surviving detection: scales the box to image coordinates, resizes the instance mask to original dimensions, thresholds mask logits, crops to the bounding box, and generates a grayscale mask buffer.
Semantic Segmentation
- Input: 512x512 RGBA frame.
- Pipeline Structure: Preprocessing resizes and normalizes the image to the model input dimensions
[1, 3, H, W]. The model outputs class logits[1, K, H, W](or[1, 1, H, W]for single-class/selfie models). For multi-class models, post-processing performs anargmaxacross class channels, applies a color palette (applyColormap) to create an RGBA mask buffer, and resizes the colored mask to original input dimensions. For single-class models, it appliessigmoidand grayscale mapping.
Pose & Keypoints
- Input: 512x512 RGBA frame.
- Pipeline Structure: Preprocessing resizes and normalizes the image buffer to
[1, 3, H, W]. The model directly outputs candidate bounding boxes[N, 4], confidence scores[N], and landmark coordinates[N, K, 3](17 body keypoints for YOLO/RF-DETR or 6 facial landmarks for BlazeFace, with x, y, confidence per point). Post-processing executes weighted Non-Maximum Suppression (NMS) to cluster overlapping candidates, computes confidence-weighted averages for both box and landmark coordinates, and scales them back to original image dimensions.
Style Transfer
- Input: 512x512 RGBA frame.
- Pipeline Structure: Preprocessing resizes the input buffer to the model's fixed input dimensions
[3, H, W]and normalizes it. The feedforward style network outputs stylized feature maps[3, H, W]. Post-processing denormalizes values, converts RGB to RGBA, and resizes the styled image back to the original canvas dimensions. - Memory Footprint: Feedforward style networks maintain full spatial resolution across internal feature representations without heavy pooling, which produces massive intermediate activation tensors. Peak memory routinely exceeds 1.1 GB despite tiny weight files (~2 MB).
Image Embeddings
- Input: 512x512 RGBA frame.
- Pipeline Structure: Powered by CLIP ViT-B/32, preprocessing resizes and normalizes the input image buffer to 224x224 (
[1, 3, 224, 224]). The model outputs a 512-dimensional embedding vector[1, 512]. Post-processing reads the raw float32 tensor data directly into aFloat32Arraywith virtually zero compute overhead, meaning total pipeline time is dominated almost entirely by model execution and image preprocessing.
OCR
- Input: 640x640 RGBA frame.
- Pipeline Structure: Powered by PP-OCRv6 inside a single fused model with two execution methods. First, DBNet text detection (
forward_detect) letterboxes the 640x640 frame and detects oriented quadrilaterals (Quadwith 4 corner points). The detected quads are sorted into reading order. Second, each quad is rectified to the text recognizer canvas and evaluated by SVTR (forward_recognize), followed by greedy CTC decoding to text strings. - Mixed Precision: The model uses mixed precision: an int8 DBNet detector paired with an fp32 SVTR recognizer (kept in fp32 because int8 quantization degrades accuracy on the SVTR attention stack).
Text to Image
- Input: Prompt (
a small wooden sailboat on a calm lake at sunrise), fixed random seed. - Pipeline Structure: Powered by SDXS-512-DreamShaper, a distilled single-step latent diffusion model with no iterative denoising loop and no classifier-free guidance. First, a CLIP text encoder (
encode) transforms 77 token IDs into text conditioning[1, 77, 768]. Next, a single UNet forward pass (denoise) updates initial Gaussian noise latents at timestep 999. Finally, a TAESD tiny decoder (decode) reconstructs the 4-channel latents[1, 4, 64, 64]into a full 512x512 RGBA image.
Text Embeddings
- Input: Fixed 4-sentence English paragraph (~80 words).
- Pipeline Structure: The tokenizer converts input text into
int64token IDs and an attention mask[1, sequence_length], truncated only if exceeding the model's maximum sequence length. Sequence pooling and normalization are baked directly into the exported.ptemodel graph, which outputs the final embedding vector[1, D](or[D]). Post-processing reads the raw embedding vector with negligible overhead.
Privacy Filter
- Input: Fixed 3-sentence paragraph containing sample PII entities (name, email, phone number, address, and account number).
- Pipeline Structure: The tokenizer converts input text into subword token IDs and an attention mask. The model evaluates token-level classification logits over a BIOES label space (
B-,I-,O,E-,S-). Post-processing parses the BIOES grammar and detects structured entity spans (PiiEntitywith entity type label, character start/end offsets, text, and confidence). Inputs exceeding the model window are evaluated via 50% overlapping sliding windows.
LLM Chat & Text Generation
- Input: Prompt (
List three uses for a paperclip.), 64 tokens decoded with EOS ignored, temperature 0 (greedy decoding). - Prefill vs. Decode & Memory: The short prompt isolates autoregressive token generation throughput (tokens/second) and time to first token (TTFT). Autoregressive decoding executes one forward pass per generated token. Peak memory is driven by model weights and allocated key-value (KV) cache buffers, with models larger than 2 GB peaking between 2.4 and 3.5 GB of resident RAM.
Speech to Text
- Input: 10 seconds of mono audio sampled at 16 kHz.
- Pipeline Structure: The Whisper model's
encodemethod ingests the raw 1D Float32 audio waveform directly, internally computing log-mel spectrogram features and encoder representations. Autoregressive decoding (decode) runs token by token to generate transcript text. - Synthetic Input Note: The benchmark uses synthetic, voice-shaped audio rather than meaningful human speech. Because the recognizer transcribes no semantic content, Whisper emits minimal tokens, meaning decoder iterations are low and benchmark numbers are dominated by the encoder. Expect higher latency on real audio with continuous speech.
Text to Speech
- Input: Fixed 2-sentence English paragraph.
- Pipeline Structure: Covers multi-stage neural TTS architectures:
- Kokoro: Text is normalized, phonemized via espeak-ng, and synthesized into 24 kHz audio through two sub-models (duration predictor and acoustic synthesizer conditioned on reference voice embeddings).
- Supertonic: Text is cleaned, unicode-indexed, and synthesized into 44.1 kHz audio across four sub-models (text encoder, duration predictor, flow-matching vector estimator denoising steps, and vocoder).
- Latency Scaling: Synthesis latency scales with input text length and generated audio duration.
Voice Activity Detection
- Input: 10 seconds of mono audio sampled at 16 kHz.
- Pipeline Structure: Native JSI
extractFramesslices the 1D audio waveform into 25 ms overlapping frames with a 10 ms hop length, applying per-frame mean removal, pre-emphasis filtering (0.97), and a periodic Hann window. The FSMN-VAD model processes the framed representations to compute per-frame speech probabilities. Post-processing applies thresholding with hysteresis, segment padding, and silence merging to output speech intervals[start, end]in seconds.