A lightweight, cross-platform system benchmark tool written in Zig. Single binary, zero dependencies.
Benchmark results are for reference only. Due to differences in scheduling across operating systems, caching, and other factors, they may differ from actual performance!
Features
- System Information — hostname, OS, architecture, kernel, CPU model/cores/cache, memory/swap, disk space, uptime, timezone, virtualization, system load
- Network Information — public IP, local IP, NAT detection, ISP/ASN, geolocation
- CPU Benchmark — prime number computation, matrix multiplication (single & multi-threaded)
- Memory Benchmark — sequential read/write/copy, random read, access latency
- Disk Benchmark — sequential read/write, random IOPS
- Cross-platform — Linux, Windows, macOS, FreeBSD
- Multi-architecture — x86_64, aarch64, arm, riscv64, s390x, ppc64le, i386, loongarch64
- Trilingual output — English, 中文,日本語
- Auto language detection — detects system language automatically, override with -l
A lightweight, cross-platform system benchmark tool written in Zig. Single binary, zero dependencies.
> Benchmark results are for reference only. Due to differences in scheduling across operating systems, caching, and other factors, they may differ from actual performance!
Features
System Information — hostname, OS, architecture, kernel, CPU model/cores/cache, memory/swap, disk space, uptime, timezone, virtualization, system load
Network Information — public IP, local IP, NAT detection, ISP/ASN, geolocation
CPU Benchmark — prime number computation, matrix multiplication (single & multi-threaded)
Memory Benchmark — sequential read/write/copy, random read, access latency
Disk Benchmark — sequential read/write, random IOPS
Auto language detection — detects system language automatically, override with -l
Download
Pre-compiled binaries for all supported platforms are available on the Releases page.
Language Support
Code
Language
Flag
en
English
-l en
zh
中文 (Chinese)
-l zh
ja
日本語 (Japanese)
-l ja
Default: auto-detect from system locale. Fallback: en. Override via -l / --lang.
Quick Start
# Build and run (native)
zig build run -Doptimize=ReleaseSmall
# Build all 14 cross-compilation targets
zig build -Doptimize=ReleaseSmall
# Run with specific language
zig build run -Doptimize=ReleaseSmall -- -l zh
zenith [options]
Options:
-h, --help Show help message
-v, --version Show version
-l, --lang Language: en, zh, ja (default: auto-detect)
--no-cpu Skip CPU benchmark
--no-memory Skip memory benchmark
--no-disk Skip disk benchmark
--no-sysinfo Skip system information
--no-network Skip network information
--cpu-method CPU method: prime, matrix, all (default: all)
--threads Thread count, 0=auto (default: 0)
--cpu-threads Alias for --threads
--disk-method Disk method: sequential, random, all (default: all)
--disk-path <p> Disk test path (default: /tmp)
--disk-size Disk test size in MB (default: 128, max: 4096)
--iterations Iterations per test (default: 3, max: 100)
-t, --time Duration per test in seconds (default: 10, range: 1-3600)
--duration Alias for --time
-o, --output Save results to file
--json Output in JSON format
Examples
# CPU only, 5 seconds per test
zenith --no-memory --no-disk --no-network -t 5
# Disk benchmark only, 256MB test file
zenith --no-cpu --no-memory --no-network --disk-size 256
# System info only (no benchmarks)
zenith --no-cpu --no-memory --no-disk
# Full benchmark with 4 threads, Japanese output
zenith --threads 4 -l ja
Scoring Algorithm
Benchmark Methodology
All benchmarks use duration-based sampling with median aggregation:
Warmup — one iteration is discarded to eliminate cold-start effects
Timed loop — benchmarks repeat until duration_secs is reached (default: 10s), collecting one sample per iteration
Median — samples are sorted and the median value is used as the final result, eliminating outliers
CPU Score
Sub-test
Formula
Prime Single
ops_per_sec × 1
Prime Multi
ops_per_sec × 1
Matrix Single
GFLOPS × 100
Matrix Multi
GFLOPS × 100
CPU Total
Sum of all 4 sub-scores
Prime: counts primes up to 100,000 using trial division. ops_per_sec = full iterations completed per second.