Rod

Benchmarks

Performance comparisons vs Zod and Pydantic.

Benchmarks

Rod prioritizes consistency and portability. Here is how it stacks up against native incumbents in various environments.

Simple Object

Validating a basic user: { name: "John", age: 30 }.

EnvironmentLibraryTime (ns)Relative Speed
JSZod201 ns1.0x (Fastest)
PythonPydantic591 ns2.9x slower
RustRod (Native)217 ns1.1x slower
JS/WASMRod (Lazy)2,001 ns10x slower
PythonRod (PyO3)4,510 ns22x slower

Batch Processing (10k items)

Validating a massive array of integers.

EnvironmentAPITime (ms)
RustRod Native0.11 ms
JSZod0.43 ms
JS/WASMRod (checkBatch)0.27 ms
PythonPydantic0.08 ms
PythonRod (PyO3)2.99 ms

Benchmark Scenarios

// Criterion benchmark
let schema = rod_obj! { 
    name: string(), 
    age: number() 
};
let data = json!({ "name": "John", "age": 30 });
let input = wrap(&data);

b.iter(|| schema.validate(&input));
// Mitata benchmark
const schema = rod.object({ 
    name: rod.string(), 
    age: rod.number() 
});
const data = { name: "John", age: 30 };

bench('rod', () => schema.parse(data));
# Timeit benchmark
schema = rod.object({
    "name": rod.string(),
    "age": rod.number()
})
data = {"name": "John", "age": 30}

timeit.timeit(lambda: schema.parse(data))

On this page