Strings
Abjadify — Execution Time (µs)
Abjadify — Memory Allocated (KB)
Levenshtein Distance — Execution Time (µs)
Levenshtein Distance — Memory Allocated (KB)
| Benchmark | Mean | Error | StdDev | Gen0 | Allocated |
|---|---|---|---|---|---|
| Abjadify · ShortText | 2.537 µs | ±0.568 µs | 0.031 µs | 0.97 | 3.95 KB |
| Abjadify · Paragraph | 14.016 µs | ±0.956 µs | 0.052 µs | 4.94 | 20.21 KB |
| Abjadify · Document | 290.770 µs | ±56.92 µs | 3.12 µs | 108.89 | 445.45 KB |
| Levenshtein · EmptyVsLong | 3.933 µs | ±2.772 µs | 0.152 µs | 0.31 | 1.28 KB |
| Levenshtein · ShortStrings | 6.812 µs | ±3.690 µs | 0.202 µs | 0.40 | 1.68 KB |
| Levenshtein · MediumStrings | 10.650 µs | ±1.860 µs | 0.102 µs | 2.23 | 9.13 KB |
| Levenshtein · IdenticalStrings | 168.090 µs | ±53.90 µs | 2.955 µs | 45.41 | 146.21 KB |
| Levenshtein · LongStrings | 173.491 µs | ±54.78 µs | 3.003 µs | 45.41 | 146.21 KB |
Levenshtein identical-string and long-string cases take similar time — the algorithm does not short-circuit on equality.
Interpreters
Brainfuck Interpreter — Execution Time (µs)
Ook — Translation & Execution Time (µs)
Brainfuck — Memory Allocated (KB)
Ook — Memory Allocated (KB)
| Benchmark | Mean | Error | StdDev | Gen0 | Allocated |
|---|---|---|---|---|---|
| Brainfuck · Tiny | 1.198 µs | ±0.865 µs | 0.047 µs | 7.19 | 29.51 KB |
| Brainfuck · HelloWorld | 1.795 µs | ±0.584 µs | 0.032 µs | 7.19 | 29.57 KB |
| Brainfuck · MultiplyIntensive | 5.189 µs | ±12.84 µs | 0.704 µs | 7.19 | 29.52 KB |
| Ook · BF→Ook (Short) | 1.292 µs | ±0.325 µs | 0.018 µs | 1.38 | 5.63 KB |
| Ook · BF→Ook (HelloWorld) | 2.132 µs | ±0.181 µs | 0.010 µs | 1.55 | 6.35 KB |
| Ook · Ook→BF (Short) | 9.151 µs | ±2.133 µs | 0.117 µs | 2.69 | 10.98 KB |
| Ook · Ook→BF (HelloWorld) | 9.592 µs | ±1.904 µs | 0.104 µs | 3.42 | 14.01 KB |
| Ook · Execute (Short) | 12.724 µs | ±14.95 µs | 0.820 µs | 9.89 | 40.48 KB |
| Ook · Execute (HelloWorld) | 22.218 µs | ±27.09 µs | 1.485 µs | 10.62 | 43.58 KB |
Ook→BF translation is ~7× slower than BF→Ook — the verbose Ook token format requires significantly more lexing work.
Images
Steganography — Execution Time (ms)
Steganography — Memory Allocated (KB)
| Benchmark | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
|---|---|---|---|---|---|---|---|
| Encode · Short msg, Small img (200×200) | 2.438 ms | ±7.294 ms | 0.400 ms | — | — | — | 22.92 KB |
| Decode · Small img (200×200) | 2.193 ms | ±7.013 ms | 0.384 ms | 117.19 | 66.41 | 66.41 | 460.81 KB |
| Encode · Long msg, Large img (800×800) | 22.238 ms | ±18.53 ms | 1.016 ms | — | — | — | 53.52 KB |
| Decode · Large img (800×800) | 25.317 ms | ±46.15 ms | 2.530 ms | 1031.25 | 968.75 | 968.75 | 7205.3 KB |
Decode allocates ~20× more memory than encode — it must load the full decoded pixel buffer to reconstruct the message from LSBs. Large image decode reaches 7 MB.
Crypto — Homomorphic Encryption (Paillier)
Encrypt / Decrypt — Execution Time (ms) · param="hello"
Slice Operations — Execution Time (ns) · param="hello"
Encrypt / Decrypt — Memory Allocated (KB) · param="hello"
| Benchmark | Param | Mean | Allocated |
|---|---|---|---|
| SubstringEncrypted · FromStart | hello | 29.5 ns | 128 B |
| SubstringEncrypted · FromMiddle | hello | 36.4 ns | 208 B |
| SubstringEncrypted · ToEnd | hello | 53.4 ns | 344 B |
| ReplaceInString · SingleChar | hello | 154.1 ms | 6.88 KB |
| ReplaceInString · Word (4 chars) | hello | 304.6 ms | 25.64 KB |
| EncryptString · Short (5 chars) | hello | 656.4 ms | 32.55 KB |
| DecryptString · Short (5 chars) | hello | 676.9 ms | 18.80 KB |
| EncryptString · Long (56 chars) | hello | 4,208 ms | 362.9 KB |
| DecryptString · Long (56 chars) | hello | 7,528 ms | 213.3 KB |
Slice/substring operations on encrypted data are O(1) pointer slices (~30–55 ns) — no decryption occurs. Encrypt/decrypt cost scales linearly with character count due to per-character Paillier operations.
.NET 9 vs .NET 10
The toolkit now targets .NET 10. The .NET 10 numbers were re-run with the same ShortRun job (BenchmarkDotNet v0.15.8, 2026-10-04) on a different machine (AMD EPYC 7763 x64, 2 physical cores, Ubuntu 24.04, .NET SDK 10.0.401) from the .NET 9 baseline above (Arm64). Because hardware and architecture differ, the two columns are not a like-for-like runtime comparison and no percentage change is given; they are listed for reference only. Allocations are effectively unchanged between the two runs (within ~1–10%), apart from small per-call differences.
| Benchmark | .NET 9 (Arm64) | .NET 10 (x64) |
|---|---|---|
| Abjadify · ShortText | 2.54 µs | 2.617 µs |
| Abjadify · Paragraph | 14 µs | 14.2 µs |
| Abjadify · Document | 291 µs | 286.3 µs |
| Levenshtein · EmptyVsLong | 3.93 µs | 4.133 µs |
| Levenshtein · ShortStrings | 6.81 µs | 7.477 µs |
| Levenshtein · MediumStrings | 10.7 µs | 14.31 µs |
| Levenshtein · IdenticalStrings | 168 µs | 190.3 µs |
| Levenshtein · LongStrings | 173 µs | 195.8 µs |
| Brainfuck · Tiny | 1.2 µs | 1.328 µs |
| Brainfuck · HelloWorld | 1.79 µs | 2.316 µs |
| Brainfuck · MultiplyIntensive | 5.19 µs | 7.032 µs |
| Ook · BF→Ook (Short) | 1.29 µs | 1.745 µs |
| Ook · BF→Ook (HelloWorld) | 2.13 µs | 2.393 µs |
| Ook · Ook→BF (Short) | 9.15 µs | 6.001 µs |
| Ook · Ook→BF (HelloWorld) | 9.59 µs | 9.342 µs |
| Ook · Execute (Short) | 12.7 µs | 7.505 µs |
| Ook · Execute (HelloWorld) | 22.2 µs | 11.95 µs |
| Steganography · Encode short msg, 200×200 | 2.44 ms | 1.472 ms |
| Steganography · Decode 200×200 | 2.19 ms | 0.6109 ms |
| Steganography · Encode long msg, 800×800 | 22.2 ms | 17.22 ms |
| Steganography · Decode 800×800 | 25.3 ms | 8.568 ms |
| Paillier · SubstringEncrypted FromStart | 29.5 ns | 26.61 ns |
| Paillier · SubstringEncrypted FromMiddle | 36.4 ns | 32.85 ns |
| Paillier · SubstringEncrypted ToEnd | 53.4 ns | 39.92 ns |
| Paillier · ReplaceInString SingleChar | 154 ms | 80.53 ms |
| Paillier · ReplaceInString Word | 305 ms | 317.4 ms |
| Paillier · EncryptString Short | 656 ms | 395.7 ms |
| Paillier · DecryptString Short | 677 ms | 396.3 ms |
| Paillier · EncryptString Long | 4.21e+03 ms | 4,587 ms |
| Paillier · DecryptString Long | 7.53e+03 ms | 4,541 ms |
Cross-Topic Overview
Representative Operation — Mean Execution Time (log scale, µs)
Crypto encrypt/decrypt operations are shown here in µs for scale comparison. Homomorphic substring slices (<0.1 µs) are omitted as they would not be visible.