| Performance of different git tools cloning a fairly large repo | |||||
| Tested on FreeBSD 14.1 (ufs2 backed memory disk without compression) cloning FreeBSD’s ports repository from codeberg.org | |||||
| Ryzen 7900, 128Gb RAM, 250mbit connection | |||||
| Everything is compiled from “scratch” with CPUTYPE set to znver4 | |||||
| Application | git (2.45.2) | Gitoxide (0.37.0) | got/Game of Trees (0.101) | Jujitsu/jj (0.19.0) | |
| Language | C | Rust | C | Rust | |
| Backend (if known) | Internal | Internal | Internal | libgit2 | |
| Time | |||||
| real | 3m31.89s | 1m59.08s | 1h28m20.01s | 5m54.43s | |
| user | 4m23.68s | 1m9.86s | 1h27m45.98s | 3m38.91s | |
| sys | 43.04s | 15.96s | 26.20s | 26.99s | |
| Memory | |||||
| maximum resident set size | 2058908 | 3591756 | 3221692 | 2036628 | |
| average shared memory size | 2802 | 10032 | 101 | 9384 | |
| average unshared data size | 224 | 27 | 68 | 20 | |
| average unshared stack size | 128 | 254 | 128 | 256 | |
| page reclaims | 605456 | 734911 | 999628 | 586084 | |
| page faults | 0 | 127 | 3 | 76 | |
| swaps | 0 | 0 | 0 | 0 | |
| block input operations | 63 | 2 | 0 | 29 | |
| block output operations | 3166 | 3851 | 14604 | 1632 | |
| messages sent | 186771 | 236 | 147698 | 8 | |
| messages received | 887549 | 381528 | 562204 | 150954 | |
| signals received | 192 | 0 | 0 | 0 | |
| voluntary context switches | 6838379 | 593280 | 202688 | 10822 | |
| involuntary context switches | 1072 | 4836 | 83135 | 3290 | |
| Notes | Uses one thread for fetching, interation of commits is extremely slow | Doesn’t seem to use compression for downloads |