Software Performance engineer.

I find bottlenecks, fix them, and build the tooling that finds the next one.

LANGUAGES
C++ Rust ASM x86 Python CUDA Bash
OPTIMIZATION
Vectorization Memory & cache Multithreading Async CPU affinity Kernel-bypass I/O
TOOLS
Benchmarking Profiling Diagnosis Disassembly CI/CD
SYSTEMS
Linux Observability Network Automation Containerization
LEADERSHIP
Tech Comms Code review Documentation Software design Dev tooling

pick a repo

simdjson/simdjson

SIMD-accelerated JSON parser for high-throughput services.

Performance05
Bug Fix03
Feature01
view repo ↗

Swapped the Grisu2 float-to-string algorithm for DragonBox: 775 to 820 M chars/s (+6% throughput augmentation), eliminating Grisu2's rare slow-path fallback.

Added native 128-bit multiplication via compiler intrinsics, replacing the textbook emulation: 826 to 917 M chars/s (+11% throughput augmentation).

Rewrote digit-extraction with lookup tables and reverse-buffer writes: 826 to 1053 M chars/s (+27% solo), reaching 1176 M chars/s (+42% stacked with #2780).

Co-Authored with Daniel Lemire. Replaced the scan-then-copy escape loop with a single pass over 16-byte blocks, storing clean blocks with one unaligned SIMD write and covering the tail with overlapping in-bounds loads. Up to +41% on the serialization benchmarks (10 to 14GB/s).

Refreshed two stale entries in the 'Real-world usage' list.

Forced constant-size memcpy operations to inline into SIMD vector ops, eliminating libc dispatch branches: 1185 to 1235 M chars/s (+4% throughput augmentation).

new benchmarks to simdjson comparing get_int64(), get_double(), and get_number() performance across both the OnDemand and DOM APIs, performing scaling test over 3 sizes. Uses a deterministic xorshift64 PRNG to generate reproducible benchmarks results, telemetry stabilized with a Trial+Minimum iteration methodology, monitoring with unix-counters (time, cycle, instructions). Includes compiler flags for readability. closing issue #2186.

Fixed an invered logic inside an benchmark, leading it to only printf 'performance regression' or 'undifferenciable'; making results ambiguous for contributors.

Fixing an issue ticket opened in 2020 when using LTO with MSVC, MSVC's /GL optimization produce unreadable objects by bindexplib causing empty export tables. Fixed with a workaround to exclude MSVC, allowing other toolchains to gain +5-15% throughput and 40-80% lighter binary