Version: v2026.5.2.1 | Commit: 32293d98 | 2026-05-02T10:06:03.065183+00:00
a2a↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Deserialize (Large) | zerodep | a2a-protocol | 525.5 µs | 452.9 µs | 1.9K | 2.2K | 1.2x slower |
| Deserialize (Medium) | zerodep | a2a-protocol | 30.2 µs | 27.9 µs | 33.2K | 35.9K | 1.1x slower |
| Deserialize (Small) | zerodep | a2a-protocol | 1.5 µs | 874.0 ns | 674.3K | 1.14M | 1.7x slower |
| Json Round Trip (Large) | zerodep | a2a-protocol | 2.31 ms | 14.19 ms | 432.0 | 70.4 | 6.1x faster |
| Json Round Trip (Medium) | zerodep | a2a-protocol | 133.3 µs | 136.0 µs | 7.5K | 7.4K | ~equal |
| Json Round Trip (Small) | zerodep | a2a-protocol | 8.8 µs | 9.4 µs | 114.2K | 106.5K | 1.1x faster |
| Serialize (Large) | zerodep | a2a-protocol | 1.23 ms | 1.48 ms | 812.4 | 676.0 | 1.2x faster |
| Serialize (Medium) | zerodep | a2a-protocol | 68.0 µs | 80.2 µs | 14.7K | 12.5K | 1.2x faster |
| Serialize (Small) | zerodep | a2a-protocol | 3.2 µs | 4.0 µs | 317.4K | 252.9K | 1.3x faster |
acp↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Deserialize (Large) | zerodep | acp (ref) | 117.9 µs | 61.2 µs | 8.5K | 16.4K | 1.9x slower |
| Deserialize (Medium) | zerodep | acp (ref) | 4.6 µs | 43.1 µs | 217.7K | 23.2K | 9.4x faster |
| Deserialize (Small) | zerodep | acp (ref) | 1.4 µs | 1.4 µs | 729.5K | 732.5K | ~equal |
| Json Round Trip (Large) | zerodep | acp (ref) | 699.6 µs | 307.0 µs | 1.4K | 3.3K | 2.3x slower |
| Json Round Trip (Medium) | zerodep | acp (ref) | 66.6 µs | 61.2 µs | 15.0K | 16.3K | 1.1x slower |
| Json Round Trip (Small) | zerodep | acp (ref) | 7.6 µs | 5.2 µs | 132.2K | 192.7K | 1.5x slower |
| Serialize (Large) | zerodep | acp (ref) | 392.4 µs | 60.9 µs | 2.5K | 16.4K | 6.4x slower |
| Serialize (Medium) | zerodep | acp (ref) | 46.8 µs | 10.2 µs | 21.4K | 98.5K | 4.6x slower |
| Serialize (Small) | zerodep | acp (ref) | 3.0 µs | 974.4 ns | 330.5K | 1.03M | 3.1x slower |
aes↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Cbc Decrypt (Large) | pure_python | PyCryptodome | 291.92 ms | 145.2 µs | 3.4 | 6.9K | 2009.8x slower |
| Cbc Decrypt (Large) | openssl | PyCryptodome | 19.3 µs | 145.2 µs | 51.7K | 6.9K | 7.5x faster |
| Cbc Decrypt (Medium) | pure_python | PyCryptodome | 4.66 ms | 10.8 µs | 214.7 | 92.5K | 430.8x slower |
| Cbc Decrypt (Medium) | openssl | PyCryptodome | 5.9 µs | 10.8 µs | 169.7K | 92.5K | 1.8x faster |
| Cbc Decrypt (Small) | pure_python | PyCryptodome | 84.4 µs | 8.2 µs | 11.8K | 122.0K | 10.3x slower |
| Cbc Decrypt (Small) | openssl | PyCryptodome | 5.4 µs | 8.2 µs | 185.1K | 122.0K | 1.5x faster |
| Cbc Encrypt (Large) | pure_python | PyCryptodome | 207.93 ms | 132.7 µs | 4.8 | 7.5K | 1566.8x slower |
| Cbc Encrypt (Large) | openssl | PyCryptodome | 55.9 µs | 132.7 µs | 17.9K | 7.5K | 2.4x faster |
| Cbc Encrypt (Medium) | pure_python | PyCryptodome | 3.37 ms | 10.3 µs | 296.3 | 97.5K | 329.0x slower |
| Cbc Encrypt (Medium) | openssl | PyCryptodome | 6.8 µs | 10.3 µs | 147.1K | 97.5K | 1.5x faster |
| Cbc Encrypt (Small) | pure_python | PyCryptodome | 68.8 µs | 7.8 µs | 14.5K | 128.8K | 8.9x slower |
| Cbc Encrypt (Small) | openssl | PyCryptodome | 5.4 µs | 7.8 µs | 186.1K | 128.8K | 1.4x faster |
| Ctr Encrypt (Large) | pure_python | PyCryptodome | 210.34 ms | 79.4 µs | 4.8 | 12.6K | 2650.4x slower |
| Ctr Encrypt (Large) | openssl | PyCryptodome | 16.2 µs | 79.4 µs | 61.6K | 12.6K | 4.9x faster |
| Ctr Encrypt (Medium) | pure_python | PyCryptodome | 3.28 ms | 10.4 µs | 304.6 | 96.3K | 316.0x slower |
| Ctr Encrypt (Medium) | openssl | PyCryptodome | 6.5 µs | 10.4 µs | 154.5K | 96.3K | 1.6x faster |
| Ctr Encrypt (Small) | pure_python | PyCryptodome | 68.0 µs | 9.2 µs | 14.7K | 108.8K | 7.4x slower |
| Ctr Encrypt (Small) | openssl | PyCryptodome | 6.0 µs | 9.2 µs | 167.0K | 108.8K | 1.5x faster |
| Ecb Decrypt (Large) | pure_python | PyCryptodome | 283.73 ms | 16.3 µs | 3.5 | 61.4K | 17422.8x slower |
| Ecb Decrypt (Large) | openssl | PyCryptodome | 19.6 µs | 16.3 µs | 51.1K | 61.4K | 1.2x slower |
| Ecb Decrypt (Medium) | pure_python | PyCryptodome | 4.47 ms | 7.5 µs | 223.5 | 133.8K | 598.7x slower |
| Ecb Decrypt (Medium) | openssl | PyCryptodome | 5.8 µs | 7.5 µs | 173.1K | 133.8K | 1.3x faster |
| Ecb Decrypt (Small) | pure_python | PyCryptodome | 85.3 µs | 7.0 µs | 11.7K | 142.5K | 12.1x slower |
| Ecb Decrypt (Small) | openssl | PyCryptodome | 5.4 µs | 7.0 µs | 186.1K | 142.5K | 1.3x faster |
| Ecb Encrypt (Large) | pure_python | PyCryptodome | 204.56 ms | 16.8 µs | 4.9 | 59.7K | 12209.1x slower |
| Ecb Encrypt (Large) | openssl | PyCryptodome | 16.3 µs | 16.8 µs | 61.3K | 59.7K | ~equal |
| Ecb Encrypt (Medium) | pure_python | PyCryptodome | 3.22 ms | 7.0 µs | 310.8 | 143.1K | 460.4x slower |
| Ecb Encrypt (Medium) | openssl | PyCryptodome | 5.8 µs | 7.0 µs | 172.3K | 143.1K | 1.2x faster |
| Ecb Encrypt (Small) | pure_python | PyCryptodome | 64.1 µs | 6.5 µs | 15.6K | 153.6K | 9.8x slower |
| Ecb Encrypt (Small) | openssl | PyCryptodome | 5.2 µs | 6.5 µs | 190.8K | 153.6K | 1.2x faster |
| Gcm Decrypt (Large) | pure_python | PyCryptodome | 302.70 ms | 127.1 µs | 3.3 | 7.9K | 2382.5x slower |
| Gcm Decrypt (Large) | openssl | PyCryptodome | 15.9 µs | 127.1 µs | 62.7K | 7.9K | 8.0x faster |
| Gcm Decrypt (Medium) | pure_python | PyCryptodome | 4.94 ms | 48.4 µs | 202.6 | 20.6K | 101.9x slower |
| Gcm Decrypt (Medium) | openssl | PyCryptodome | 7.9 µs | 48.4 µs | 126.3K | 20.6K | 6.1x faster |
| Gcm Decrypt (Small) | pure_python | PyCryptodome | 215.5 µs | 47.4 µs | 4.6K | 21.1K | 4.5x slower |
| Gcm Decrypt (Small) | openssl | PyCryptodome | 7.2 µs | 47.4 µs | 138.5K | 21.1K | 6.6x faster |
| Gcm Encrypt (Large) | pure_python | PyCryptodome | 297.13 ms | 116.4 µs | 3.4 | 8.6K | 2552.9x slower |
| Gcm Encrypt (Large) | openssl | PyCryptodome | 16.1 µs | 116.4 µs | 62.2K | 8.6K | 7.2x faster |
| Gcm Encrypt (Medium) | pure_python | PyCryptodome | 4.84 ms | 37.7 µs | 206.7 | 26.6K | 128.4x slower |
| Gcm Encrypt (Medium) | openssl | PyCryptodome | 8.0 µs | 37.7 µs | 125.5K | 26.6K | 4.7x faster |
| Gcm Encrypt (Small) | pure_python | PyCryptodome | 210.0 µs | 36.9 µs | 4.8K | 27.1K | 5.7x slower |
| Gcm Encrypt (Small) | openssl | PyCryptodome | 7.5 µs | 36.9 µs | 134.1K | 27.1K | 4.9x faster |
cache↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Decorator Overhead | zerodep_lru | cachetools | 170.9 µs | 201.8 µs | 5.8K | 5.0K | 1.2x faster |
| Decorator Overhead | zerodep_ttl | cachetools | 226.5 µs | 227.7 µs | 4.4K | 4.4K | ~equal |
| Eviction Pressure | zerodep_lfu | cachetools | 1.47 ms | 1.51 ms | 678.9 | 662.6 | ~equal |
| Eviction Pressure | zerodep_lru | cachetools | 1.34 ms | 1.46 ms | 748.9 | 684.6 | 1.1x faster |
| Key Function | zerodep_hashkey | cachetools | 478.2 µs | 486.9 µs | 2.1K | 2.1K | ~equal |
| Key Function | zerodep_typedkey | cachetools | 971.6 µs | 1.26 ms | 1.0K | 793.1 | 1.3x faster |
| LRUGet Set | zerodep | cachetools | 743.5 µs | 821.1 µs | 1.3K | 1.2K | 1.1x faster |
| Mixed Workload | zerodep | cachetools | 619.8 µs | 683.0 µs | 1.6K | 1.5K | 1.1x faster |
| TTLExpiry | zerodep | cachetools | 3.05 ms | 3.05 ms | 328.1 | 328.2 | ~equal |
cdp↗
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Command Throughput | send_command_burst | 3.63 ms | 275.6 |
| Full Render Pipeline | get_rendered_text | 694.9 µs | 1.4K |
| Full Render Pipeline | get_rendered_text_fresh_client | 906.4 µs | 1.1K |
| Js Eval Throughput | evaluate_burst | 1.01 ms | 985.4 |
| Multi Target | multi_target_pipeline | 3.75 ms | 267.0 |
| Render Html | get_rendered_html | 766.9 µs | 1.3K |
config↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Cast Bool | zerodep | python-decouple | 1.1 µs | 2.1 µs | 904.1K | 484.5K | 1.9x faster |
| Cast Int | zerodep | python-decouple | 1.0 µs | 1.9 µs | 984.6K | 530.5K | 1.9x faster |
| Csv Cast | zerodep | python-decouple | 2.2 µs | 9.8 µs | 463.4K | 101.8K | 4.6x faster |
| Dotenv Lookup | zerodep | python-decouple | 542.4 ns | 1.3 µs | 1.84M | 760.7K | 2.4x faster |
| Env Lookup | zerodep | python-decouple | 683.0 ns | 1.3 µs | 1.46M | 760.7K | 1.9x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Config Init | zerodep_env_only | 446.8 ns | 2.24M |
| Config Init | zerodep_with_dotenv | 762.3 µs | 1.3K |
| Config Init | zerodep_with_json | 34.5 µs | 29.0K |
| Nested Json Lookup | zerodep | 1.7 µs | 579.2K |
diff↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Parse (Large) | zerodep | unidiff | 72.6 µs | 159.8 µs | 13.8K | 6.3K | 2.2x faster |
| Parse (Medium) | zerodep | unidiff | 24.6 µs | 52.2 µs | 40.7K | 19.1K | 2.1x faster |
| Parse (Small) | zerodep | unidiff | 8.0 µs | 18.0 µs | 125.0K | 55.6K | 2.2x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Apply (Large) | zerodep | 48.3 µs | 20.7K |
| Apply (Medium) | zerodep | 5.8 µs | 171.2K |
| Apply (Small) | zerodep | 2.0 µs | 507.1K |
dotenv↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Parse (Large) | zerodep | python-dotenv | 1.09 ms | 1.08 ms | 918.8 | 925.5 | ~equal |
| Parse (Medium) | zerodep | python-dotenv | 153.9 µs | 153.6 µs | 6.5K | 6.5K | ~equal |
| Parse (Small) | zerodep | python-dotenv | 21.6 µs | 21.6 µs | 46.2K | 46.3K | ~equal |
frontmatter↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Parse (Large) | zerodep | python-frontmatter | 351.3 µs | 352.4 µs | 2.8K | 2.8K | ~equal |
| Parse (Medium) | zerodep | python-frontmatter | 68.7 µs | 68.5 µs | 14.6K | 14.6K | ~equal |
| Parse (Small) | zerodep | python-frontmatter | 10.6 µs | 10.7 µs | 94.8K | 93.6K | ~equal |
| Serialize (Large) | zerodep | python-frontmatter | 532.8 µs | 533.4 µs | 1.9K | 1.9K | ~equal |
| Serialize (Medium) | zerodep | python-frontmatter | 112.9 µs | 113.4 µs | 8.9K | 8.8K | ~equal |
| Serialize (Small) | zerodep | python-frontmatter | 18.2 µs | 18.2 µs | 54.8K | 55.0K | ~equal |
httpclient↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Async Client Get | zerodep | httpx | 826.7 µs | 20.76 ms | 1.2K | 48.2 | 25.1x faster |
| Async File Upload | zerodep | httpx | 1.09 ms | 21.92 ms | 913.5 | 45.6 | 20.0x faster |
| Async Get | zerodep | httpx | 789.7 µs | 20.94 ms | 1.3K | 47.8 | 26.5x faster |
| Async Post JSON | zerodep | httpx | 877.1 µs | 21.23 ms | 1.1K | 47.1 | 24.2x faster |
| Async Streaming | zerodep | httpx | 849.9 µs | 20.95 ms | 1.2K | 47.7 | 24.6x faster |
| Sync Client Get | zerodep | httpx | 467.4 µs | 867.8 µs | 2.1K | 1.2K | 1.9x faster |
| Sync File Upload | zerodep | httpx | 725.9 µs | 15.25 ms | 1.4K | 65.6 | 21.0x faster |
| Sync Get | zerodep | httpx | 449.3 µs | 15.42 ms | 2.2K | 64.9 | 34.3x faster |
| Sync Gzip Decompression | zerodep | httpx | 472.1 µs | 15.00 ms | 2.1K | 66.7 | 31.8x faster |
| Sync Post JSON | zerodep | httpx | 505.7 µs | 15.55 ms | 2.0K | 64.3 | 30.7x faster |
| Sync Streaming | zerodep | httpx | 454.7 µs | 14.78 ms | 2.2K | 67.7 | 32.5x faster |
httpserver↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Concurrent Get | zerodep | flask | 5.63 ms | 6.59 ms | 177.5 | 151.7 | 1.2x faster |
| Concurrent Get | zerodep | microdot | 5.63 ms | 5.58 ms | 177.5 | 179.2 | ~equal |
| Concurrent Get | zerodep | bottle | 5.63 ms | 1.024 s | 177.5 | 1.0 | 181.8x faster |
| Concurrent Post | zerodep | flask | 5.77 ms | 6.98 ms | 173.3 | 143.3 | 1.2x faster |
| Concurrent Post | zerodep | microdot | 5.77 ms | 5.97 ms | 173.3 | 167.5 | ~equal |
| Concurrent Post | zerodep | bottle | 5.77 ms | 1.024 s | 173.3 | 1.0 | 177.5x faster |
| Get JSON | zerodep | flask | 424.6 µs | 564.7 µs | 2.4K | 1.8K | 1.3x faster |
| Get JSON | zerodep | microdot | 424.6 µs | 497.2 µs | 2.4K | 2.0K | 1.2x faster |
| Get JSON | zerodep | bottle | 424.6 µs | 422.5 µs | 2.4K | 2.4K | ~equal |
| Get Text | zerodep | flask | 474.1 µs | 546.6 µs | 2.1K | 1.8K | 1.2x faster |
| Get Text | zerodep | microdot | 474.1 µs | 451.4 µs | 2.1K | 2.2K | 1.1x slower |
| Get Text | zerodep | bottle | 474.1 µs | 429.2 µs | 2.1K | 2.3K | 1.1x slower |
| Large Payload | zerodep | flask | 710.5 µs | 913.6 µs | 1.4K | 1.1K | 1.3x faster |
| Large Payload | zerodep | microdot | 710.5 µs | 728.4 µs | 1.4K | 1.4K | ~equal |
| Large Payload | zerodep | bottle | 710.5 µs | 757.1 µs | 1.4K | 1.3K | 1.1x faster |
| Post JSON | zerodep | flask | 479.5 µs | 629.2 µs | 2.1K | 1.6K | 1.3x faster |
| Post JSON | zerodep | microdot | 479.5 µs | 495.3 µs | 2.1K | 2.0K | ~equal |
| Post JSON | zerodep | bottle | 479.5 µs | 515.1 µs | 2.1K | 1.9K | 1.1x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Sync Vs Async Handler | async_handler | 398.2 µs | 2.5K |
| Sync Vs Async Handler | sync_handler | 494.7 µs | 2.0K |
jsonc↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Load (Large) | zerodep | commentjson | 1.45 ms | 164.43 ms | 691.9 | 6.1 | 113.8x faster |
| Load (Medium) | zerodep | commentjson | 72.7 µs | 6.35 ms | 13.8K | 157.4 | 87.4x faster |
| Load (Small) | zerodep | commentjson | 11.8 µs | 928.3 µs | 84.6K | 1.1K | 78.5x faster |
jsonrpc↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Dispatch Batch | zerodep | jsonrpcserver | 109.3 µs | 1.51 ms | 9.1K | 661.5 | 13.8x faster |
| Dispatch Error | zerodep | jsonrpcserver | 7.4 µs | 75.4 µs | 134.6K | 13.3K | 10.1x faster |
| Dispatch Not Found | zerodep | jsonrpcserver | 6.2 µs | 58.0 µs | 161.0K | 17.2K | 9.3x faster |
| Dispatch Success | zerodep | jsonrpcserver | 5.7 µs | 78.0 µs | 176.2K | 12.8K | 13.7x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Deserialize From Dict | request_from_dict | 742.8 ns | 1.35M |
| Deserialize From Dict | response_from_dict | 743.2 ns | 1.35M |
| Id Generation | next_id | 88.6 ns | 11.28M |
| Json Round Trip | json_round_trip | 5.1 µs | 198.0K |
| Serialize To Dict | request_to_dict | 288.9 ns | 3.46M |
| Serialize To Dict | response_to_dict | 226.0 ns | 4.42M |
jsonschema↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Perf (Large) | zerodep | allof-merge (JS) | 178.0 µs | 566.8 µs | 5.6K | 1.8K | 3.2x faster |
| Perf (Medium) | zerodep | allof-merge (JS) | 58.1 µs | 302.8 µs | 17.2K | 3.3K | 5.2x faster |
| Perf (Small) | zerodep | allof-merge (JS) | 23.3 µs | 123.9 µs | 43.0K | 8.1K | 5.3x faster |
| Perf Tiny | zerodep | allof-merge (JS) | 13.4 µs | 133.7 µs | 74.8K | 7.5K | 10.0x faster |
| Perf Xlarge | zerodep | allof-merge (JS) | 1.23 ms | 2.34 ms | 815.2 | 427.9 | 1.9x faster |
llmstxt↗
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Candidate Urls | zerodep | 10.7 µs | 93.6K |
| Parse (Large) | zerodep | 1.06 ms | 942.3 |
| Parse (Medium) | zerodep | 41.6 µs | 24.0K |
| Parse (Small) | zerodep | 10.2 µs | 97.8K |
markdown↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Render (Large) | zerodep | mistune | 4.13 ms | 6.65 ms | 242.0 | 150.3 | 1.6x faster |
| Render (Medium) | zerodep | mistune | 254.8 µs | 480.1 µs | 3.9K | 2.1K | 1.9x faster |
| Render (Small) | zerodep | mistune | 38.2 µs | 43.8 µs | 26.2K | 22.8K | 1.1x faster |
| Render GFMLarge | zerodep | mistune | 4.63 ms | 9.14 ms | 215.8 | 109.4 | 2.0x faster |
| Render GFMMedium | zerodep | mistune | 235.5 µs | 482.4 µs | 4.2K | 2.1K | 2.0x faster |
persistdict↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Iterate (Small) | zerodep_json | shelve | 523.2 µs | 284.8 µs | 1.9K | 3.5K | 1.8x slower |
| Iterate (Small) | zerodep_json | sqlitedict | 523.2 µs | 965.8 µs | 1.9K | 1.0K | 1.8x faster |
| Iterate (Small) | zerodep_sqlite | shelve | 714.7 µs | 284.8 µs | 1.4K | 3.5K | 2.5x slower |
| Iterate (Small) | zerodep_sqlite | sqlitedict | 714.7 µs | 965.8 µs | 1.4K | 1.0K | 1.4x faster |
| Read (Small) | zerodep_json | shelve | 1.13 ms | 263.8 µs | 882.3 | 3.8K | 4.3x slower |
| Read (Small) | zerodep_json | sqlitedict | 1.13 ms | 6.97 ms | 882.3 | 143.4 | 6.2x faster |
| Read (Small) | zerodep_sqlite | shelve | 679.0 µs | 263.8 µs | 1.5K | 3.8K | 2.6x slower |
| Read (Small) | zerodep_sqlite | sqlitedict | 679.0 µs | 6.97 ms | 1.5K | 143.4 | 10.3x faster |
| Write (Large) | zerodep_json | shelve | 11.10 ms | 17.41 ms | 90.1 | 57.4 | 1.6x faster |
| Write (Large) | zerodep_json | sqlitedict | 11.10 ms | 535.37 ms | 90.1 | 1.9 | 48.2x faster |
| Write (Large) | zerodep_sqlite | shelve | 168.05 ms | 17.41 ms | 6.0 | 57.4 | 9.7x slower |
| Write (Large) | zerodep_sqlite | sqlitedict | 168.05 ms | 535.37 ms | 6.0 | 1.9 | 3.2x faster |
| Write (Large) | zerodep_sqlite_batched | shelve | 22.45 ms | 17.41 ms | 44.5 | 57.4 | 1.3x slower |
| Write (Large) | zerodep_sqlite_batched | sqlitedict | 22.45 ms | 535.37 ms | 44.5 | 1.9 | 23.8x faster |
| Write (Small) | zerodep_json | shelve | 311.1 µs | 494.0 µs | 3.2K | 2.0K | 1.6x faster |
| Write (Small) | zerodep_json | sqlitedict | 311.1 µs | 13.66 ms | 3.2K | 73.2 | 43.9x faster |
| Write (Small) | zerodep_sqlite | shelve | 10.70 ms | 494.0 µs | 93.4 | 2.0K | 21.7x slower |
| Write (Small) | zerodep_sqlite | sqlitedict | 10.70 ms | 13.66 ms | 93.4 | 73.2 | 1.3x faster |
| Write (Small) | zerodep_sqlite_batched | shelve | 5.32 ms | 494.0 µs | 187.9 | 2.0K | 10.8x slower |
| Write (Small) | zerodep_sqlite_batched | sqlitedict | 5.32 ms | 13.66 ms | 187.9 | 73.2 | 2.6x faster |
png↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Decode Bmp Medium RGB | zerodep | pillow | 463.4 µs | 70.9 µs | 2.2K | 14.1K | 6.5x slower |
| Decode Large RGBA | zerodep | pillow | 401.74 ms | 18.14 ms | 2.5 | 55.1 | 22.1x slower |
| Decode Medium Gray | zerodep | pillow | 4.94 ms | 223.5 µs | 202.3 | 4.5K | 22.1x slower |
| Decode Medium RGB | zerodep | pillow | 18.86 ms | 789.3 µs | 53.0 | 1.3K | 23.9x slower |
| Decode Medium RGBA | zerodep | pillow | 21.90 ms | 978.2 µs | 45.7 | 1.0K | 22.4x slower |
| Decode Small RGBA | zerodep | pillow | 1.24 ms | 39.1 µs | 809.5 | 25.6K | 31.6x slower |
| Encode Bmp Medium RGB | zerodep | pillow | 423.9 µs | 61.5 µs | 2.4K | 16.3K | 6.9x slower |
| Encode Large RGBA | zerodep | pillow | 3.097 s | 148.98 ms | 0.3 | 6.7 | 20.8x slower |
| Encode Medium RGBA | zerodep | pillow | 193.08 ms | 9.15 ms | 5.2 | 109.3 | 21.1x slower |
| Encode Small RGBA | zerodep | pillow | 11.63 ms | 225.4 µs | 86.0 | 4.4K | 51.6x slower |
| Matrix Round Trip | zerodep_encode | pillow_encode | 70.91 ms | 2.12 ms | 14.1 | 470.9 | 33.4x slower |
| Matrix Round Trip | zerodep_encode | pillow_decode | 70.91 ms | 184.7 µs | 14.1 | 5.4K | 384.0x slower |
| Matrix Round Trip | zerodep_decode | pillow_encode | 13.78 ms | 2.12 ms | 72.6 | 470.9 | 6.5x slower |
| Matrix Round Trip | zerodep_decode | pillow_decode | 13.78 ms | 184.7 µs | 72.6 | 5.4K | 74.6x slower |
protobuf↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Decode Comparison | zerodep_large | google (protobuf) | 253.1 µs | 3.4 µs | 4.0K | 290.8K | 73.6x slower |
| Decode Comparison | zerodep_medium | google (protobuf) | 35.7 µs | 1.0 µs | 28.0K | 981.9K | 35.0x slower |
| Decode Comparison | zerodep_small | google (protobuf) | 3.7 µs | 535.6 ns | 270.3K | 1.87M | 6.9x slower |
| Encode Comparison | zerodep_large | google (protobuf) | 94.6 µs | 2.0 µs | 10.6K | 508.5K | 48.1x slower |
| Encode Comparison | zerodep_medium | google (protobuf) | 16.0 µs | 247.3 ns | 62.4K | 4.04M | 64.8x slower |
| Encode Comparison | zerodep_small | google (protobuf) | 1.6 µs | 230.1 ns | 638.4K | 4.35M | 6.8x slower |
| Roundtrip Comparison | zerodep_large | google (protobuf) | 341.4 µs | 5.4 µs | 2.9K | 184.1K | 62.8x slower |
| Roundtrip Comparison | zerodep_medium | google (protobuf) | 51.0 µs | 1.4 µs | 19.6K | 711.2K | 36.2x slower |
| Roundtrip Comparison | zerodep_small | google (protobuf) | 5.3 µs | 790.0 ns | 189.2K | 1.27M | 6.7x slower |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| test_decode_large | decode_large | 252.2 µs | 4.0K |
| test_decode_medium | decode_medium | 35.6 µs | 28.1K |
| test_decode_small | decode_small | 3.7 µs | 273.2K |
| test_encode_large | encode_large | 94.0 µs | 10.6K |
| test_encode_medium | encode_medium | 15.6 µs | 64.0K |
| test_encode_small | encode_small | 1.5 µs | 665.0K |
| test_from_dict_large | from_dict_large | 135.0 µs | 7.4K |
| test_roundtrip_large | roundtrip_large | 345.0 µs | 2.9K |
| test_roundtrip_medium | roundtrip_medium | 51.4 µs | 19.4K |
| test_roundtrip_small | roundtrip_small | 5.4 µs | 186.5K |
| test_to_dict_large | to_dict_large | 80.4 µs | 12.4K |
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Encode Binary | zerodep | qrcode | 29.63 ms | 34.71 ms | 33.8 | 28.8 | 1.2x faster |
| Encode High Ecc | zerodep | qrcode | 5.50 ms | 5.30 ms | 181.9 | 188.8 | ~equal |
| Encode Large Data | zerodep | qrcode | 29.71 ms | 36.82 ms | 33.7 | 27.2 | 1.2x faster |
| Encode Long | zerodep | qrcode | 9.37 ms | 9.59 ms | 106.7 | 104.2 | ~equal |
| Encode Numeric | zerodep | qrcode | 3.64 ms | 3.19 ms | 274.6 | 313.0 | 1.1x slower |
| Encode Short | zerodep | qrcode | 2.00 ms | 1.41 ms | 500.6 | 710.1 | 1.4x slower |
| Encode URL | zerodep | qrcode | 4.57 ms | 4.05 ms | 218.7 | 246.9 | 1.1x slower |
readability↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Large | zerodep | readability-lxml | 25.71 ms | 21.00 ms | 38.9 | 47.6 | 1.2x slower |
| Large | zerodep | Mozilla Readability.js | 25.71 ms | 548.85 ms | 38.9 | 1.8 | 21.3x faster |
| Medium | zerodep | readability-lxml | 1.98 ms | 2.62 ms | 505.8 | 381.2 | 1.3x faster |
| Medium | zerodep | Mozilla Readability.js | 1.98 ms | 19.96 ms | 505.8 | 50.1 | 10.1x faster |
| Small | zerodep | readability-lxml | 196.1 µs | 476.6 µs | 5.1K | 2.1K | 2.4x faster |
| Small | zerodep | Mozilla Readability.js | 196.1 µs | 12.07 ms | 5.1K | 82.8 | 61.5x faster |
| Synthetic (Large) | zerodep | readability-lxml | 4.59 ms | 10.02 ms | 217.7 | 99.8 | 2.2x faster |
| Synthetic (Large) | zerodep | Mozilla Readability.js | 4.59 ms | 36.92 ms | 217.7 | 27.1 | 8.0x faster |
| Synthetic (Medium) | zerodep | readability-lxml | 878.5 µs | 1.79 ms | 1.1K | 558.4 | 2.0x faster |
| Synthetic (Medium) | zerodep | Mozilla Readability.js | 878.5 µs | 11.14 ms | 1.1K | 89.8 | 12.7x faster |
| Synthetic (Small) | zerodep | readability-lxml | 330.1 µs | 542.7 µs | 3.0K | 1.8K | 1.6x faster |
| Synthetic (Small) | zerodep | Mozilla Readability.js | 330.1 µs | 8.02 ms | 3.0K | 124.7 | 24.3x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Is Probably Readable | zerodep | 1.38 ms | 724.7 |
retry↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Backoff Calculation | zerodep | tenacity | 4.1 µs | 11.8 µs | 245.5K | 84.7K | 2.9x faster |
| Decorator Overhead | zerodep | tenacity | 377.5 ns | 15.2 µs | 2.65M | 65.8K | 40.3x faster |
| Retry With Failures | zerodep | tenacity | 122.8 µs | 163.2 µs | 8.1K | 6.1K | 1.3x faster |
runner↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Env Passing | zerodep | sh | 10.17 ms | 68.28 ms | 98.3 | 14.6 | 6.7x faster |
| Env Passing | zerodep | subprocess | 10.17 ms | 10.09 ms | 98.3 | 99.1 | ~equal |
| Output Capture | zerodep | sh | 10.12 ms | 68.67 ms | 98.8 | 14.6 | 6.8x faster |
| Output Capture | zerodep | subprocess | 10.12 ms | 10.38 ms | 98.8 | 96.4 | ~equal |
| Simple Command | zerodep | sh | 1.84 ms | 57.73 ms | 544.3 | 17.3 | 31.4x faster |
| Simple Command | zerodep | subprocess | 1.84 ms | 763.8 µs | 544.3 | 1.3K | 2.4x slower |
| Stdin Input | zerodep | sh | 10.20 ms | 67.80 ms | 98.0 | 14.7 | 6.6x faster |
| Stdin Input | zerodep | subprocess | 10.20 ms | 10.03 ms | 98.0 | 99.7 | ~equal |
| Streaming Lines | zerodep | sh | 10.12 ms | 68.11 ms | 98.8 | 14.7 | 6.7x faster |
| Streaming Lines | zerodep | subprocess | 10.12 ms | 10.01 ms | 98.8 | 99.9 | ~equal |
scheduler↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Batch Next Fire Time | zerodep | croniter | 513.5 µs | 3.13 ms | 1.9K | 319.3 | 6.1x faster |
| Batch Next Fire Time | zerodep | APScheduler | 513.5 µs | 743.1 µs | 1.9K | 1.3K | 1.4x faster |
| Cron Parsing | zerodep | croniter | 35.1 µs | 267.2 µs | 28.5K | 3.7K | 7.6x faster |
| Cron Parsing | zerodep | APScheduler | 35.1 µs | 134.8 µs | 28.5K | 7.4K | 3.8x faster |
| Job Add Overhead | zerodep | schedule | 404.8 µs | 478.6 µs | 2.5K | 2.1K | 1.2x faster |
| Next Fire Time | zerodep | croniter | 41.3 µs | 435.4 µs | 24.2K | 2.3K | 10.5x faster |
| Next Fire Time | zerodep | APScheduler | 41.3 µs | 98.6 µs | 24.2K | 10.1K | 2.4x faster |
semver↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Compare | zerodep | packaging | 3.1 µs | 3.3 µs | 327.3K | 306.8K | 1.1x faster |
| Parse Complex | zerodep | packaging | 18.7 µs | 19.1 µs | 53.6K | 52.4K | ~equal |
| Parse Prerelease | zerodep | packaging | 16.6 µs | 18.0 µs | 60.4K | 55.6K | 1.1x faster |
| Parse Simple | zerodep | packaging | 11.2 µs | 5.1 µs | 89.0K | 195.9K | 2.2x slower |
| Property Access | zerodep | packaging | 936.5 ns | 7.0 µs | 1.07M | 142.8K | 7.5x faster |
| Sort | zerodep | packaging | 1.3 µs | 1.5 µs | 757.9K | 674.7K | 1.1x faster |
soup↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Large | zerodep | beautifulsoup4 | 22.24 ms | 49.51 ms | 45.0 | 20.2 | 2.2x faster |
| Medium | zerodep | beautifulsoup4 | 1.85 ms | 4.12 ms | 540.9 | 243.0 | 2.2x faster |
| Pseudo Select (Large) | zerodep | beautifulsoup4 | 83.90 ms | 87.35 ms | 11.9 | 11.4 | ~equal |
| Pseudo Select (Medium) | zerodep | beautifulsoup4 | 2.86 ms | 8.50 ms | 350.1 | 117.6 | 3.0x faster |
| Pseudo Select (Small) | zerodep | beautifulsoup4 | 300.3 µs | 1.03 ms | 3.3K | 972.8 | 3.4x faster |
| Select (Large) | zerodep | beautifulsoup4 | 24.81 ms | 57.95 ms | 40.3 | 17.3 | 2.3x faster |
| Select (Medium) | zerodep | beautifulsoup4 | 2.07 ms | 6.96 ms | 483.7 | 143.6 | 3.4x faster |
| Select (Small) | zerodep | beautifulsoup4 | 289.3 µs | 807.9 µs | 3.5K | 1.2K | 2.8x faster |
| Serialize (Large) | zerodep | beautifulsoup4 | 22.43 ms | 62.54 ms | 44.6 | 16.0 | 2.8x faster |
| Serialize (Medium) | zerodep | beautifulsoup4 | 1.73 ms | 5.68 ms | 578.4 | 176.0 | 3.3x faster |
| Serialize (Small) | zerodep | beautifulsoup4 | 219.8 µs | 646.8 µs | 4.5K | 1.5K | 2.9x faster |
| Small | zerodep | beautifulsoup4 | 195.6 µs | 480.3 µs | 5.1K | 2.1K | 2.5x faster |
| Tree Ops (Large) | zerodep | beautifulsoup4 | 24.00 ms | 50.41 ms | 41.7 | 19.8 | 2.1x faster |
| Tree Ops (Medium) | zerodep | beautifulsoup4 | 1.81 ms | 4.57 ms | 552.7 | 218.9 | 2.5x faster |
| Tree Ops (Small) | zerodep | beautifulsoup4 | 244.5 µs | 575.3 µs | 4.1K | 1.7K | 2.4x faster |
sparse_search↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Indexing Performance | index_1k_ours | rank-bm25 | 136.71 ms | 11.78 ms | 7.3 | 84.9 | 11.6x slower |
| Large Search Performance | search_1k_ours | rank-bm25 | 2.6 µs | 293.5 µs | 389.1K | 3.4K | 114.2x faster |
| Scale Search10K | broad_query_ours | rank-bm25 | 50.97 ms | 2.68 ms | 19.6 | 373.7 | 19.0x slower |
| Scale Search10K | selective_query_ours | rank-bm25 | 137.2 µs | 2.42 ms | 7.3K | 413.0 | 17.6x faster |
| Scale Search1K | broad_query_ours | rank-bm25 | 3.84 ms | 249.1 µs | 260.6 | 4.0K | 15.4x slower |
| Scale Search1K | selective_query_ours | rank-bm25 | 15.3 µs | 236.6 µs | 65.6K | 4.2K | 15.5x faster |
| Search Performance | search_ours | rank-bm25 | 2.6 µs | 79.4 µs | 381.4K | 12.6K | 30.3x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Calibration Performance | calibrate_corpus | 846.2 µs | 1.2K |
| Calibration Performance | search_raw | 33.7 µs | 29.7K |
| Calibration Performance | search_calibrated | 63.5 µs | 15.8K |
| Indexing Performance | index_1k_bm25s | 38.68 ms | 25.8 |
| Large Search Performance | search_1k_bm25s | 24.4 µs | 40.9K |
| MMRPerformance | mmr_100_candidates | 3.34 ms | 299.4 |
| MMRPerformance | mmr_500_candidates | 19.96 ms | 50.1 |
| RRFPerformance | rrf_2_lists_1000_results | 710.5 µs | 1.4K |
| RRFPerformance | rrf_10_lists_100_results | 344.6 µs | 2.9K |
| RRFPerformance | rrf_overlapping_docs | 660.8 µs | 1.5K |
| Scale Search10K | broad_query_bm25s | 138.1 µs | 7.2K |
| Scale Search10K | selective_query_bm25s | 1.10 ms | 913.1 |
| Scale Search1K | broad_query_bm25s | 39.1 µs | 25.6K |
| Scale Search1K | selective_query_bm25s | 100.8 µs | 9.9K |
| Search Performance | search_bm25s | 21.1 µs | 47.4K |
sse↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Large Stream | zerodep | httpx | 2.49 ms | 1.78 ms | 401.3 | 562.2 | 1.4x slower |
| Medium Stream | zerodep | httpx | 294.8 µs | 235.0 µs | 3.4K | 4.3K | 1.3x slower |
| Small Stream | zerodep | httpx | 23.4 µs | 16.8 µs | 42.7K | 59.4K | 1.4x slower |
structlog↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Bind And Log | zerodep | structlog | 8.5 µs | 14.8 µs | 117.0K | 67.4K | 1.7x faster |
| Bound Log | zerodep | structlog | 8.7 µs | 14.0 µs | 114.4K | 71.6K | 1.6x faster |
| JSONRendering | zerodep | structlog | 7.3 µs | 8.6 µs | 137.0K | 116.2K | 1.2x faster |
| Simple Log | zerodep | structlog | 7.6 µs | 9.7 µs | 132.2K | 103.4K | 1.3x faster |
tabulate↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Large Table | zerodep | reference | 4.73 ms | 21.16 ms | 211.5 | 47.3 | 4.5x faster |
| Medium Table | zerodep | reference | 305.1 µs | 1.37 ms | 3.3K | 732.5 | 4.5x faster |
| Small Table | zerodep | reference | 35.9 µs | 114.3 µs | 27.9K | 8.7K | 3.2x faster |
toon↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Decode Benchmark | decode_large_ours | decode_large_ref | 1.64 ms | 1.75 ms | 608.9 | 572.6 | 1.1x faster |
| Decode Benchmark | decode_medium_ours | decode_medium_ref | 240.3 µs | 258.2 µs | 4.2K | 3.9K | 1.1x faster |
| Decode Benchmark | decode_small_ours | decode_small_ref | 15.8 µs | 17.3 µs | 63.2K | 57.9K | 1.1x faster |
| Encode Benchmark | encode_large_ours | encode_large_ref | 920.1 µs | 1.22 ms | 1.1K | 822.9 | 1.3x faster |
| Encode Benchmark | encode_medium_ours | encode_medium_ref | 159.7 µs | 201.1 µs | 6.3K | 5.0K | 1.3x faster |
| Encode Benchmark | encode_small_ours | encode_small_ref | 7.2 µs | 9.5 µs | 138.9K | 105.6K | 1.3x faster |
useragent↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Generate Chrome Desktop | zerodep | ua_generator | 4.0 µs | 9.1 µs | 253.1K | 110.2K | 2.3x faster |
| Generate Default | zerodep | ua_generator | 4.3 µs | 9.5 µs | 233.3K | 105.5K | 2.2x faster |
| Generate Edge Mobile | zerodep | ua_generator | 4.2 µs | 10.6 µs | 240.9K | 94.1K | 2.6x faster |
| Headers Get | zerodep | ua_generator | 6.2 µs | 12.0 µs | 160.3K | 83.5K | 1.9x faster |
validate↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Benchmark Constrained | ours | pydantic | 7.8 µs | 1.3 µs | 128.0K | 777.5K | 6.1x slower |
| Benchmark Json Schema | ours | pydantic | 7.8 µs | 124.8 µs | 128.0K | 8.0K | 16.0x faster |
| Benchmark List Of Dicts | ours | pydantic | 179.0 µs | 24.3 µs | 5.6K | 41.2K | 7.4x slower |
| Benchmark Nested | ours | pydantic | 8.1 µs | 1.8 µs | 123.0K | 561.8K | 4.6x slower |
| Benchmark Simple | ours | pydantic | 4.5 µs | 1.2 µs | 221.6K | 813.0K | 3.7x slower |
websocket↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Burst Messages | zerodep | websockets | 4.54 ms | 5.10 ms | 220.5 | 196.0 | 1.1x faster |
| Connection Setup | zerodep | websockets | 323.7 µs | 870.7 µs | 3.1K | 1.1K | 2.7x faster |
| Json Rpc Roundtrip | zerodep | websockets | 67.6 µs | 84.1 µs | 14.8K | 11.9K | 1.2x faster |
| Large Payload | zerodep | websockets | 4.90 ms | 2.54 ms | 204.1 | 393.0 | 1.9x slower |
xml↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Parse (Large) | zerodep | xmltodict | 4.06 ms | 4.49 ms | 246.5 | 222.9 | 1.1x faster |
| Parse (Medium) | zerodep | xmltodict | 301.9 µs | 337.3 µs | 3.3K | 3.0K | 1.1x faster |
| Parse (Small) | zerodep | xmltodict | 11.8 µs | 13.4 µs | 84.7K | 74.7K | 1.1x faster |
| Unparse (Large) | zerodep | xmltodict | 3.05 ms | 4.99 ms | 327.8 | 200.5 | 1.6x faster |
| Unparse (Medium) | zerodep | xmltodict | 213.8 µs | 351.8 µs | 4.7K | 2.8K | 1.6x faster |
| Unparse (Small) | zerodep | xmltodict | 12.1 µs | 15.1 µs | 82.6K | 66.0K | 1.3x faster |
Standalone benchmarks
| Operation | Variant | Mean | ops/s |
| Extract Tags | extract_all | 591.2 µs | 1.7K |
| Extract Tags | extract_filtered | 348.8 µs | 2.9K |
| Extract Tags | extract_first_only | 7.5 µs | 133.0K |
yaml↗
| Operation | zerodep | Reference | zerodep time | Ref time | zerodep ops/s | Ref ops/s | Ratio |
| Dump (Large) | zerodep | PyYAML | 1.99 ms | 13.75 ms | 501.9 | 72.7 | 6.9x faster |
| Dump (Medium) | zerodep | PyYAML | 111.4 µs | 641.0 µs | 9.0K | 1.6K | 5.8x faster |
| Dump (Small) | zerodep | PyYAML | 14.4 µs | 105.7 µs | 69.3K | 9.5K | 7.3x faster |
| Load (Large) | zerodep | PyYAML | 4.30 ms | 30.87 ms | 232.4 | 32.4 | 7.2x faster |
| Load (Medium) | zerodep | PyYAML | 204.7 µs | 1.32 ms | 4.9K | 758.0 | 6.4x faster |
| Load (Small) | zerodep | PyYAML | 30.7 µs | 194.5 µs | 32.6K | 5.1K | 6.3x faster |