# Benchmarks The benchmarks take several hours to run and create hundreds of millions of files. Run at your own risk. :) ## Setup Run all commands in the root of this repository. ```bash cargo install hyperfine ftzz cargo b --workspace --release mkdir benches /tmp/empty ``` ### My environment - Linux: 5.14.0-162.18.1.el9_1.x86_64 - CPU: Intel i7-7700 - Memory: 15GiB - `/dev/sda6 /tmp xfs rw,nosuid,nodev,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0` > The macOS/Windows implementations are currently equivalent to the `*_rayon` implementations shown > in the benchmarks. ## Remove ### Run ```bash for num_bytes in {0,1G}; do for num_files in {10,10_000,100_000,1M}; do hyperfine --warmup 3 -N \ --export-markdown "benches/remove_${num_files}_files_${num_bytes}_bytes.md" \ --export-json "benches/remove_${num_files}_files_${num_bytes}_bytes.json" \ --prepare "ftzz g -n ${num_files} -b ${num_bytes} /tmp/ftzz" \ "rm -r /tmp/ftzz" \ "find /tmp/ftzz -delete" \ "rsync --delete -r /tmp/empty/ /tmp/ftzz" \ "./target/release/rm_stdlib /tmp/ftzz" \ "./target/release/rm_rayon /tmp/ftzz" \ "./target/release/rm_remove_dir_all /tmp/ftzz" \ "./target/release/rmz /tmp/ftzz" done hyperfine --warmup 3 -N \ --export-markdown "benches/remove_100_000_files_${num_bytes}_bytes_0_depth.md" \ --export-json "benches/remove_100_000_files_${num_bytes}_bytes_0_depth.json" \ --prepare "ftzz g -n 100_000 -b ${num_bytes} -d 0 /tmp/ftzz" \ "rm -r /tmp/ftzz" \ "find /tmp/ftzz -delete" \ "rsync --delete -r /tmp/empty/ /tmp/ftzz" \ "perl -e 'for(){unlink}'" \ "./target/release/rm_stdlib /tmp/ftzz" \ "./target/release/rm_rayon /tmp/ftzz" \ "./target/release/rm_remove_dir_all /tmp/ftzz" \ "./target/release/rmz /tmp/ftzz" hyperfine --warmup 3 -N \ --export-markdown "benches/remove_100_000_files_${num_bytes}_bytes_5_files_per_dir.md" \ --export-json "benches/remove_100_000_files_${num_bytes}_bytes_5_files_per_dir.json" \ --prepare "ftzz g -n 100_000 -b ${num_bytes} -r 5 /tmp/ftzz" \ "rm -r /tmp/ftzz" \ "find /tmp/ftzz -delete" \ "rsync --delete -r /tmp/empty/ /tmp/ftzz" \ "./target/release/rm_stdlib /tmp/ftzz" \ "./target/release/rm_rayon /tmp/ftzz" \ "./target/release/rm_remove_dir_all /tmp/ftzz" \ "./target/release/rmz /tmp/ftzz" done ``` ### Results #### `remove_1M_files_0_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:-----------------------------------------------|---------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 4.711 ± 0.649 | 4.208 | 6.099 | 0.535 | 18.650 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 5.689 ± 0.549 | 5.007 | 6.630 | 1.253 | 20.088 | 1.21 ± 0.20 | | `./target/release/rm_stdlib /tmp/ftzz` | 9.345 ± 0.063 | 9.282 | 9.457 | 0.377 | 8.708 | 1.98 ± 0.27 | | `rm -r /tmp/ftzz` | 9.491 ± 0.059 | 9.444 | 9.650 | 0.465 | 8.768 | 2.01 ± 0.28 | | `find /tmp/ftzz -delete` | 9.535 ± 0.051 | 9.434 | 9.620 | 0.485 | 8.804 | 2.02 ± 0.28 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 11.046 ± 0.049 | 10.989 | 11.120 | 0.911 | 9.914 | 2.34 ± 0.32 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 12.647 ± 0.088 | 12.532 | 12.758 | 1.376 | 10.950 | 2.68 ± 0.37 | #### `remove_1M_files_1G_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:-----------------------------------------------|---------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 6.559 ± 0.463 | 5.977 | 7.689 | 0.556 | 28.872 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 7.765 ± 0.454 | 7.047 | 8.567 | 1.331 | 30.759 | 1.18 ± 0.11 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 18.924 ± 0.321 | 18.394 | 19.428 | 0.977 | 16.014 | 2.89 ± 0.21 | | `./target/release/rm_stdlib /tmp/ftzz` | 22.892 ± 0.885 | 21.842 | 24.252 | 0.451 | 17.758 | 3.49 ± 0.28 | | `find /tmp/ftzz -delete` | 23.020 ± 0.755 | 21.342 | 23.911 | 0.601 | 17.805 | 3.51 ± 0.27 | | `rm -r /tmp/ftzz` | 23.354 ± 0.990 | 21.777 | 24.772 | 0.563 | 17.907 | 3.56 ± 0.29 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 26.357 ± 0.758 | 24.981 | 27.640 | 1.505 | 20.445 | 4.02 ± 0.31 | #### `remove_100_000_files_0_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:-----------------------------------------------|--------------:|---------:|---------:|----------:|------------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 459.3 ± 96.0 | 369.7 | 583.3 | 65.2 | 1697.5 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 648.1 ± 94.7 | 535.5 | 811.3 | 158.6 | 2121.1 | 1.41 ± 0.36 | | `./target/release/rm_stdlib /tmp/ftzz` | 804.2 ± 19.5 | 777.9 | 848.2 | 42.5 | 723.3 | 1.75 ± 0.37 | | `find /tmp/ftzz -delete` | 826.2 ± 22.6 | 796.3 | 853.0 | 55.3 | 728.1 | 1.80 ± 0.38 | | `rm -r /tmp/ftzz` | 873.7 ± 54.2 | 813.7 | 968.5 | 53.2 | 744.3 | 1.90 ± 0.41 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 1012.7 ± 16.8 | 996.3 | 1045.1 | 96.1 | 846.1 | 2.21 ± 0.46 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1132.0 ± 46.9 | 1099.2 | 1243.2 | 136.3 | 945.9 | 2.46 ± 0.53 | #### `remove_100_000_files_0_bytes_0_depth.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:-----------------------------------------------|---------------:|---------:|---------:|----------:|------------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 830.7 ± 21.7 | 805.1 | 863.2 | 31.6 | 769.5 | 1.00 | | `./target/release/rm_stdlib /tmp/ftzz` | 833.8 ± 26.8 | 806.7 | 881.3 | 34.7 | 769.5 | 1.00 ± 0.04 | | `rm -r /tmp/ftzz` | 847.1 ± 15.3 | 833.9 | 871.3 | 53.1 | 775.2 | 1.02 ± 0.03 | | `find /tmp/ftzz -delete` | 849.7 ± 14.8 | 835.2 | 875.2 | 50.3 | 781.1 | 1.02 ± 0.03 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 978.3 ± 24.4 | 954.3 | 1033.6 | 89.4 | 819.5 | 1.18 ± 0.04 | | `perl -e 'for(){unlink}'` | 1070.0 ± 5.3 | 1063.0 | 1078.6 | 132.8 | 923.4 | 1.29 ± 0.03 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1155.9 ± 42.9 | 1104.6 | 1256.0 | 124.8 | 984.6 | 1.39 ± 0.06 | | `./target/release/rm_rayon /tmp/ftzz` | 1193.3 ± 307.0 | 1082.7 | 2066.6 | 102.5 | 2030.4 | 1.44 ± 0.37 | #### `remove_100_000_files_0_bytes_5_files_per_dir.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:-----------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 0.640 ± 0.189 | 0.445 | 0.950 | 0.145 | 2.228 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 0.784 ± 0.110 | 0.670 | 0.961 | 0.303 | 2.610 | 1.22 ± 0.40 | | `./target/release/rm_stdlib /tmp/ftzz` | 0.988 ± 0.057 | 0.940 | 1.117 | 0.091 | 0.832 | 1.54 ± 0.46 | | `find /tmp/ftzz -delete` | 1.090 ± 0.021 | 1.056 | 1.136 | 0.164 | 0.883 | 1.70 ± 0.50 | | `rm -r /tmp/ftzz` | 1.123 ± 0.013 | 1.098 | 1.141 | 0.153 | 0.921 | 1.75 ± 0.52 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 1.190 ± 0.020 | 1.168 | 1.238 | 0.168 | 0.956 | 1.86 ± 0.55 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1.340 ± 0.031 | 1.304 | 1.405 | 0.224 | 1.045 | 2.09 ± 0.62 | #### `remove_100_000_files_1G_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:-----------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 0.558 ± 0.129 | 0.400 | 0.734 | 0.063 | 2.339 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 0.625 ± 0.116 | 0.535 | 0.934 | 0.141 | 2.450 | 1.12 ± 0.33 | | `./target/release/rm_stdlib /tmp/ftzz` | 1.104 ± 0.014 | 1.080 | 1.132 | 0.043 | 1.020 | 1.98 ± 0.46 | | `find /tmp/ftzz -delete` | 1.128 ± 0.016 | 1.110 | 1.155 | 0.054 | 1.027 | 2.02 ± 0.47 | | `rm -r /tmp/ftzz` | 1.129 ± 0.008 | 1.117 | 1.142 | 0.054 | 1.035 | 2.02 ± 0.47 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 1.311 ± 0.005 | 1.301 | 1.317 | 0.098 | 1.138 | 2.35 ± 0.54 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1.454 ± 0.014 | 1.434 | 1.478 | 0.143 | 1.261 | 2.60 ± 0.60 | #### `remove_100_000_files_1G_bytes_0_depth.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:-----------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | `./target/release/rm_rayon /tmp/ftzz` | 1.087 ± 0.005 | 1.081 | 1.097 | 0.092 | 2.516 | 1.00 | | *`./target/release/rmz /tmp/ftzz`* | 1.115 ± 0.025 | 1.090 | 1.173 | 0.028 | 1.048 | 1.03 ± 0.02 | | `./target/release/rm_stdlib /tmp/ftzz` | 1.124 ± 0.038 | 1.094 | 1.208 | 0.034 | 1.044 | 1.03 ± 0.04 | | `rm -r /tmp/ftzz` | 1.129 ± 0.017 | 1.102 | 1.158 | 0.052 | 1.046 | 1.04 ± 0.02 | | `find /tmp/ftzz -delete` | 1.137 ± 0.011 | 1.120 | 1.156 | 0.057 | 1.048 | 1.05 ± 0.01 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 1.251 ± 0.019 | 1.235 | 1.301 | 0.087 | 1.093 | 1.15 ± 0.02 | | `perl -e 'for(){unlink}'` | 1.354 ± 0.008 | 1.342 | 1.367 | 0.130 | 1.192 | 1.24 ± 0.01 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1.470 ± 0.031 | 1.438 | 1.537 | 0.127 | 1.285 | 1.35 ± 0.03 | #### `remove_100_000_files_1G_bytes_5_files_per_dir.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:-----------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 0.508 ± 0.034 | 0.483 | 0.600 | 0.115 | 2.352 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 0.683 ± 0.059 | 0.599 | 0.779 | 0.261 | 2.828 | 1.34 ± 0.15 | | `./target/release/rm_stdlib /tmp/ftzz` | 1.246 ± 0.033 | 1.209 | 1.327 | 0.102 | 1.082 | 2.45 ± 0.18 | | `find /tmp/ftzz -delete` | 1.387 ± 0.034 | 1.354 | 1.462 | 0.169 | 1.159 | 2.73 ± 0.19 | | `rm -r /tmp/ftzz` | 1.402 ± 0.023 | 1.372 | 1.451 | 0.163 | 1.182 | 2.76 ± 0.19 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 1.485 ± 0.012 | 1.460 | 1.501 | 0.168 | 1.237 | 2.92 ± 0.20 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1.632 ± 0.026 | 1.598 | 1.689 | 0.230 | 1.338 | 3.21 ± 0.22 | #### `remove_10_000_files_0_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:-----------------------------------------------|------------:|---------:|---------:|----------:|------------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 33.9 ± 1.1 | 32.1 | 36.3 | 9.2 | 145.0 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 40.1 ± 2.3 | 37.2 | 48.1 | 18.6 | 160.0 | 1.18 ± 0.08 | | `./target/release/rm_stdlib /tmp/ftzz` | 77.2 ± 1.3 | 75.3 | 80.0 | 7.2 | 68.4 | 2.28 ± 0.08 | | `find /tmp/ftzz -delete` | 85.4 ± 1.3 | 84.0 | 88.5 | 10.1 | 73.0 | 2.52 ± 0.09 | | `rm -r /tmp/ftzz` | 86.1 ± 1.5 | 84.8 | 89.2 | 11.3 | 73.0 | 2.54 ± 0.09 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 110.8 ± 1.5 | 109.1 | 113.8 | 18.2 | 90.2 | 3.27 ± 0.12 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 138.6 ± 1.3 | 136.8 | 143.0 | 14.1 | 83.7 | 4.09 ± 0.14 | #### `remove_10_000_files_1G_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:-----------------------------------------------|------------:|---------:|---------:|----------:|------------:|------------:| | *`./target/release/rmz /tmp/ftzz`* | 45.4 ± 1.8 | 43.7 | 50.0 | 7.3 | 297.6 | 1.00 | | `./target/release/rm_rayon /tmp/ftzz` | 51.6 ± 1.2 | 50.0 | 53.8 | 18.6 | 310.4 | 1.14 ± 0.05 | | `./target/release/rm_stdlib /tmp/ftzz` | 171.2 ± 1.5 | 168.9 | 173.8 | 5.5 | 162.0 | 3.77 ± 0.15 | | `find /tmp/ftzz -delete` | 179.9 ± 0.9 | 178.7 | 181.4 | 12.2 | 163.8 | 3.96 ± 0.16 | | `rm -r /tmp/ftzz` | 181.5 ± 1.3 | 180.1 | 184.6 | 12.4 | 165.4 | 4.00 ± 0.16 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 208.0 ± 1.5 | 206.0 | 209.9 | 17.3 | 186.1 | 4.58 ± 0.19 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 233.8 ± 0.9 | 232.5 | 235.1 | 14.4 | 176.7 | 5.15 ± 0.21 | #### `remove_10_files_0_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:-----------------------------------------------|-----------:|---------:|---------:|----------:|------------:|-------------:| | *`./target/release/rmz /tmp/ftzz`* | 1.1 ± 0.1 | 1.0 | 1.4 | 0.6 | 1.6 | 1.00 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 1.3 ± 0.0 | 1.2 | 1.4 | 0.4 | 0.8 | 1.18 ± 0.07 | | `./target/release/rm_rayon /tmp/ftzz` | 1.5 ± 0.4 | 1.2 | 3.5 | 1.2 | 2.9 | 1.39 ± 0.34 | | `./target/release/rm_stdlib /tmp/ftzz` | 2.8 ± 0.1 | 2.5 | 3.2 | 0.7 | 1.9 | 2.53 ± 0.16 | | `rm -r /tmp/ftzz` | 3.5 ± 0.1 | 3.3 | 3.7 | 1.0 | 2.3 | 3.25 ± 0.20 | | `find /tmp/ftzz -delete` | 4.2 ± 0.3 | 3.5 | 4.8 | 1.0 | 2.6 | 3.85 ± 0.38 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 46.8 ± 0.1 | 46.5 | 47.0 | 2.4 | 5.1 | 42.89 ± 2.40 | #### `remove_10_files_1G_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:-----------------------------------------------|-----------:|---------:|---------:|----------:|------------:|------------:| | `./target/release/rm_rayon /tmp/ftzz` | 15.9 ± 1.1 | 14.1 | 17.7 | 1.0 | 69.2 | 1.00 | | *`./target/release/rmz /tmp/ftzz`* | 17.3 ± 0.6 | 16.2 | 18.3 | 0.7 | 61.5 | 1.09 ± 0.08 | | `./target/release/rm_stdlib /tmp/ftzz` | 48.4 ± 0.3 | 47.4 | 49.1 | 0.3 | 47.4 | 3.04 ± 0.20 | | `./target/release/rm_remove_dir_all /tmp/ftzz` | 48.5 ± 0.3 | 47.5 | 48.8 | 0.3 | 47.6 | 3.05 ± 0.20 | | `rm -r /tmp/ftzz` | 49.0 ± 1.9 | 48.0 | 57.7 | 0.5 | 47.7 | 3.08 ± 0.24 | | `find /tmp/ftzz -delete` | 51.2 ± 8.9 | 48.9 | 91.1 | 0.3 | 48.0 | 3.22 ± 0.60 | | `rsync --delete -r /tmp/empty/ /tmp/ftzz` | 90.3 ± 0.2 | 90.0 | 90.8 | 1.5 | 48.5 | 5.68 ± 0.38 | ## Copy ### Setup ```bash cargo install fcp xcp git clone https://github.com/wheybags/wcp.git && mkdir wcp/build && (cd wcp/build && cmake .. -DCMAKE_BUILD_TYPE=Release && make) ``` ### Run ```bash for num_bytes in {0,1G}; do for num_files in {10,10_000,100_000,1M}; do hyperfine --warmup 3 -N \ --export-markdown "benches/copy_${num_files}_files_${num_bytes}_bytes.md" \ --export-json "benches/copy_${num_files}_files_${num_bytes}_bytes.json" \ --setup "ftzz g -n ${num_files} -b ${num_bytes} /tmp/ftzz" \ --prepare "rm -rf /tmp/ftzzz" --cleanup "rm -r /tmp/ftzz" \ "cp -r /tmp/ftzz /tmp/ftzzz" \ "fcp /tmp/ftzz /tmp/ftzzz" \ "xcp -r /tmp/ftzz /tmp/ftzzz" \ "./wcp/build/wcp /tmp/ftzz /tmp/ftzzz" \ "rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz" \ "sh -c '(cd /tmp/ftzz; tar cf - .) | (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'" \ "./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz" \ "./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz" \ "./target/release/cpz /tmp/ftzz /tmp/ftzzz" done hyperfine --warmup 3 -N \ --export-markdown "benches/copy_100_000_files_${num_bytes}_bytes_0_depth.md" \ --export-json "benches/copy_100_000_files_${num_bytes}_bytes_0_depth.json" \ --setup "ftzz g -n 100_000 -b ${num_bytes} -d 0 /tmp/ftzz" \ --prepare "rm -rf /tmp/ftzzz" --cleanup "rm -r /tmp/ftzz" \ "cp -r /tmp/ftzz /tmp/ftzzz" \ "fcp /tmp/ftzz /tmp/ftzzz" \ "xcp -r /tmp/ftzz /tmp/ftzzz" \ "./wcp/build/wcp /tmp/ftzz /tmp/ftzzz" \ "rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz" \ "sh -c '(cd /tmp/ftzz; tar cf - .) | (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'" \ "./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz" \ "./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz" \ "./target/release/cpz /tmp/ftzz /tmp/ftzzz" hyperfine --warmup 3 -N \ --export-markdown "benches/copy_100_000_files_${num_bytes}_bytes_5_files_per_dir.md" \ --export-json "benches/copy_100_000_files_${num_bytes}_bytes_5_files_per_dir.json" \ --setup "ftzz g -n 100_000 -b ${num_bytes} -r 5 /tmp/ftzz" \ --prepare "rm -rf /tmp/ftzzz" --cleanup "rm -r /tmp/ftzz" \ "cp -r /tmp/ftzz /tmp/ftzzz" \ "fcp /tmp/ftzz /tmp/ftzzz" \ "xcp -r /tmp/ftzz /tmp/ftzzz" \ "./wcp/build/wcp /tmp/ftzz /tmp/ftzzz" \ "rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz" \ "sh -c '(cd /tmp/ftzz; tar cf - .) | (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'" \ "./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz" \ "./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz" \ "./target/release/cpz /tmp/ftzz /tmp/ftzzz" done hyperfine --warmup 3 -N \ --export-markdown "benches/copy_100_000_files_1G_bytes_0_depth_0_entropy.md" \ --export-json "benches/copy_100_000_files_1G_bytes_0_depth_0_entropy.json" \ --setup "ftzz g -n 100_000 -b 1G -d 0 --fill-byte 0 /tmp/ftzz" \ --prepare "rm -rf /tmp/ftzzz" --cleanup "rm -r /tmp/ftzz" \ "cp -r /tmp/ftzz /tmp/ftzzz" \ "fcp /tmp/ftzz /tmp/ftzzz" \ "xcp -r /tmp/ftzz /tmp/ftzzz" \ "./wcp/build/wcp /tmp/ftzz /tmp/ftzzz" \ "rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz" \ "sh -c '(cd /tmp/ftzz; tar cf - .) | (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'" \ "./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz" \ "./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz" \ "./target/release/cpz /tmp/ftzz /tmp/ftzzz" ``` ### Results #### `copy_1M_files_0_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|---------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 5.076 ± 0.976 | 4.283 | 6.700 | 2.769 | 23.713 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 5.854 ± 0.310 | 5.542 | 6.429 | 5.287 | 29.890 | 1.15 ± 0.23 | | `fcp /tmp/ftzz /tmp/ftzzz` | 11.801 ± 0.085 | 11.727 | 11.993 | 5.376 | 59.341 | 2.33 ± 0.45 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 11.829 ± 0.066 | 11.733 | 11.920 | 5.420 | 39.040 | 2.33 ± 0.45 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 15.019 ± 0.079 | 14.915 | 15.131 | 3.893 | 14.808 | 2.96 ± 0.57 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 18.436 ± 0.097 | 18.313 | 18.622 | 2.836 | 15.261 | 3.63 ± 0.70 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 19.496 ± 0.090 | 19.346 | 19.609 | 3.217 | 15.928 | 3.84 ± 0.74 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 28.195 ± 0.159 | 27.929 | 28.439 | 6.635 | 23.035 | 5.55 ± 1.07 | #### `copy_1M_files_1G_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|---------------:|--------:|--------:|---------:|-----------:|-------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 7.593 ± 0.735 | 7.141 | 9.648 | 3.151 | 40.109 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 8.827 ± 0.796 | 8.104 | 10.143 | 5.482 | 46.376 | 1.16 ± 0.15 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 13.374 ± 0.149 | 13.103 | 13.559 | 6.218 | 46.409 | 1.76 ± 0.17 | | `fcp /tmp/ftzz /tmp/ftzzz` | 13.459 ± 0.087 | 13.349 | 13.636 | 5.837 | 68.041 | 1.77 ± 0.17 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 23.669 ± 1.371 | 21.564 | 25.593 | 5.858 | 22.336 | 3.12 ± 0.35 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 28.173 ± 0.091 | 28.047 | 28.343 | 2.950 | 24.495 | 3.71 ± 0.36 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 28.945 ± 0.121 | 28.744 | 29.084 | 3.394 | 24.931 | 3.81 ± 0.37 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 89.173 ± 1.821 | 87.317 | 94.034 | 12.557 | 55.997 | 11.74 ± 1.16 | #### `copy_100_000_files_0_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 0.379 ± 0.009 | 0.373 | 0.397 | 0.261 | 1.910 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 0.487 ± 0.018 | 0.471 | 0.535 | 0.513 | 2.604 | 1.28 ± 0.06 | | `fcp /tmp/ftzz /tmp/ftzzz` | 0.597 ± 0.016 | 0.581 | 0.629 | 0.554 | 3.073 | 1.57 ± 0.05 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 0.957 ± 0.015 | 0.939 | 0.982 | 0.529 | 3.295 | 2.52 ± 0.07 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 1.302 ± 0.022 | 1.277 | 1.332 | 0.389 | 1.274 | 3.43 ± 0.10 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 1.632 ± 0.023 | 1.611 | 1.682 | 0.277 | 1.323 | 4.30 ± 0.11 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 1.730 ± 0.009 | 1.719 | 1.750 | 0.308 | 1.389 | 4.56 ± 0.11 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 2.838 ± 0.019 | 2.803 | 2.864 | 0.638 | 2.141 | 7.49 ± 0.18 | #### `copy_100_000_files_0_bytes_0_depth.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | `xcp -r /tmp/ftzz /tmp/ftzzz` | 1.133 ± 0.014 | 1.109 | 1.161 | 0.474 | 3.606 | 1.00 | | `fcp /tmp/ftzz /tmp/ftzzz` | 1.260 ± 0.010 | 1.247 | 1.280 | 0.412 | 6.386 | 1.11 ± 0.02 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 1.270 ± 0.010 | 1.256 | 1.287 | 0.390 | 6.620 | 1.12 ± 0.02 | | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 1.365 ± 0.005 | 1.357 | 1.373 | 0.167 | 1.171 | 1.20 ± 0.02 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 1.406 ± 0.012 | 1.389 | 1.428 | 0.339 | 1.394 | 1.24 ± 0.02 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 1.618 ± 0.012 | 1.594 | 1.636 | 0.255 | 1.335 | 1.43 ± 0.02 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 1.735 ± 0.008 | 1.725 | 1.751 | 0.287 | 1.418 | 1.53 ± 0.02 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 2.157 ± 0.030 | 2.117 | 2.216 | 0.581 | 2.057 | 1.90 ± 0.04 | #### `copy_100_000_files_0_bytes_5_files_per_dir.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 0.413 ± 0.013 | 0.404 | 0.440 | 0.318 | 2.214 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 0.493 ± 0.008 | 0.484 | 0.509 | 0.576 | 2.661 | 1.19 ± 0.04 | | `fcp /tmp/ftzz /tmp/ftzzz` | 0.505 ± 0.009 | 0.496 | 0.523 | 0.672 | 2.700 | 1.22 ± 0.05 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 0.844 ± 0.033 | 0.804 | 0.897 | 0.723 | 2.841 | 2.04 ± 0.10 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 1.319 ± 0.018 | 1.297 | 1.350 | 0.463 | 1.371 | 3.19 ± 0.11 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 1.737 ± 0.008 | 1.729 | 1.757 | 0.318 | 1.385 | 4.20 ± 0.14 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 1.791 ± 0.012 | 1.767 | 1.805 | 0.336 | 1.419 | 4.33 ± 0.14 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 3.028 ± 0.023 | 2.991 | 3.064 | 0.787 | 2.217 | 7.33 ± 0.24 | #### `copy_100_000_files_1G_bytes.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|---------------:|--------:|--------:|---------:|-----------:|-------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 0.711 ± 0.129 | 0.618 | 1.064 | 0.317 | 3.421 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 0.819 ± 0.042 | 0.763 | 0.878 | 0.551 | 4.251 | 1.15 ± 0.22 | | `fcp /tmp/ftzz /tmp/ftzzz` | 0.858 ± 0.030 | 0.811 | 0.897 | 0.591 | 4.541 | 1.21 ± 0.22 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 1.110 ± 0.016 | 1.079 | 1.129 | 0.610 | 3.930 | 1.56 ± 0.28 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 2.437 ± 0.061 | 2.377 | 2.565 | 0.726 | 2.784 | 3.43 ± 0.63 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 2.453 ± 0.016 | 2.430 | 2.478 | 0.289 | 2.108 | 3.45 ± 0.63 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 2.550 ± 0.029 | 2.513 | 2.616 | 0.331 | 2.161 | 3.59 ± 0.65 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 10.653 ± 0.120 | 10.454 | 10.842 | 4.030 | 6.585 | 14.99 ± 2.73 | #### `copy_100_000_files_1G_bytes_0_depth.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | `xcp -r /tmp/ftzz /tmp/ftzzz` | 1.209 ± 0.020 | 1.181 | 1.244 | 0.524 | 4.290 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 1.340 ± 0.005 | 1.334 | 1.350 | 0.402 | 6.999 | 1.11 ± 0.02 | | `fcp /tmp/ftzz /tmp/ftzzz` | 1.358 ± 0.015 | 1.338 | 1.391 | 0.432 | 6.779 | 1.12 ± 0.02 | | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 2.080 ± 0.012 | 2.064 | 2.099 | 0.206 | 1.820 | 1.72 ± 0.03 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 2.371 ± 0.020 | 2.348 | 2.408 | 0.288 | 2.030 | 1.96 ± 0.04 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 2.422 ± 0.026 | 2.386 | 2.477 | 0.638 | 2.749 | 2.00 ± 0.04 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 2.464 ± 0.037 | 2.432 | 2.541 | 0.268 | 2.133 | 2.04 ± 0.05 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 9.292 ± 0.080 | 9.164 | 9.382 | 3.508 | 5.456 | 7.69 ± 0.14 | #### `copy_100_000_files_1G_bytes_0_depth_0_entropy.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|------------:| | `xcp -r /tmp/ftzz /tmp/ftzzz` | 1.200 ± 0.018 | 1.178 | 1.230 | 0.539 | 4.253 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 1.346 ± 0.010 | 1.332 | 1.361 | 0.407 | 7.095 | 1.12 ± 0.02 | | `fcp /tmp/ftzz /tmp/ftzzz` | 1.409 ± 0.033 | 1.345 | 1.451 | 0.448 | 6.888 | 1.17 ± 0.03 | | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 2.086 ± 0.015 | 2.057 | 2.104 | 0.212 | 1.819 | 1.74 ± 0.03 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 2.331 ± 0.019 | 2.308 | 2.366 | 0.275 | 2.004 | 1.94 ± 0.03 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 2.364 ± 0.008 | 2.356 | 2.380 | 0.296 | 2.013 | 1.97 ± 0.03 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 2.406 ± 0.034 | 2.366 | 2.488 | 0.628 | 2.734 | 2.00 ± 0.04 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 9.245 ± 0.059 | 9.144 | 9.332 | 3.526 | 5.482 | 7.70 ± 0.13 | #### `copy_100_000_files_1G_bytes_5_files_per_dir.md` | Command | Mean [s] | Min [s] | Max [s] | User [s] | System [s] | Relative | |:------------------------------------------------------------------------------------|--------------:|--------:|--------:|---------:|-----------:|-------------:| | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 0.733 ± 0.028 | 0.714 | 0.812 | 0.598 | 3.970 | 1.00 | | `fcp /tmp/ftzz /tmp/ftzzz` | 0.766 ± 0.027 | 0.742 | 0.826 | 0.695 | 4.110 | 1.05 ± 0.05 | | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 0.775 ± 0.063 | 0.691 | 0.880 | 0.385 | 3.810 | 1.06 ± 0.10 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 1.050 ± 0.025 | 1.021 | 1.094 | 0.745 | 3.788 | 1.43 ± 0.07 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 2.359 ± 0.033 | 2.324 | 2.406 | 0.771 | 2.752 | 3.22 ± 0.13 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 2.506 ± 0.017 | 2.480 | 2.526 | 0.338 | 2.110 | 3.42 ± 0.13 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 2.540 ± 0.018 | 2.501 | 2.559 | 0.366 | 2.116 | 3.46 ± 0.14 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 9.930 ± 0.168 | 9.748 | 10.341 | 4.235 | 6.487 | 13.54 ± 0.57 | #### `copy_10_000_files_0_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:------------------------------------------------------------------------------------|------------:|---------:|---------:|----------:|------------:|------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 33.6 ± 0.4 | 33.1 | 34.7 | 28.8 | 186.4 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 43.7 ± 0.5 | 42.9 | 45.3 | 55.6 | 243.4 | 1.30 ± 0.02 | | `fcp /tmp/ftzz /tmp/ftzzz` | 45.7 ± 0.7 | 44.9 | 48.0 | 61.5 | 249.9 | 1.36 ± 0.03 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 78.2 ± 5.3 | 71.6 | 96.4 | 59.0 | 271.6 | 2.33 ± 0.16 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 119.5 ± 1.7 | 116.7 | 122.6 | 44.7 | 118.7 | 3.55 ± 0.07 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 159.8 ± 2.5 | 156.7 | 164.3 | 29.7 | 126.2 | 4.75 ± 0.09 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 164.0 ± 1.5 | 162.2 | 167.9 | 31.2 | 129.0 | 4.87 ± 0.07 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 321.1 ± 3.0 | 316.5 | 324.9 | 73.3 | 208.2 | 9.55 ± 0.15 | #### `copy_10_000_files_1G_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:------------------------------------------------------------------------------------|--------------:|---------:|---------:|----------:|------------:|-------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 55.0 ± 2.9 | 52.0 | 59.7 | 34.0 | 313.3 | 1.00 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 66.2 ± 3.7 | 62.9 | 72.7 | 55.6 | 374.0 | 1.20 ± 0.09 | | `fcp /tmp/ftzz /tmp/ftzzz` | 67.9 ± 4.0 | 63.7 | 75.4 | 63.6 | 380.9 | 1.23 ± 0.10 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 142.2 ± 44.9 | 93.2 | 197.6 | 72.8 | 379.1 | 2.59 ± 0.83 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 231.3 ± 2.5 | 228.8 | 235.2 | 30.9 | 194.4 | 4.21 ± 0.23 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 234.7 ± 2.7 | 231.4 | 240.0 | 36.0 | 192.6 | 4.27 ± 0.23 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 676.7 ± 4.2 | 670.8 | 683.0 | 185.0 | 915.5 | 12.31 ± 0.66 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 2572.6 ± 26.8 | 2535.0 | 2626.5 | 2714.9 | 1197.5 | 46.78 ± 2.55 | #### `copy_10_files_0_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:------------------------------------------------------------------------------------|-----------:|---------:|---------:|----------:|------------:|-------------:| | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 2.7 ± 0.3 | 2.3 | 3.7 | 2.3 | 5.2 | 1.00 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 2.7 ± 0.1 | 2.6 | 3.3 | 0.7 | 1.8 | 1.01 ± 0.11 | | `fcp /tmp/ftzz /tmp/ftzzz` | 2.8 ± 0.1 | 2.5 | 3.2 | 2.2 | 5.4 | 1.03 ± 0.13 | | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 2.9 ± 0.2 | 2.6 | 3.5 | 1.4 | 4.8 | 1.08 ± 0.14 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 3.4 ± 0.4 | 3.0 | 4.0 | 0.9 | 2.3 | 1.26 ± 0.20 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 3.6 ± 0.4 | 3.2 | 4.6 | 1.7 | 3.2 | 1.33 ± 0.21 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 9.6 ± 1.4 | 6.7 | 10.9 | 6.6 | 7.8 | 3.56 ± 0.64 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 47.7 ± 0.1 | 47.2 | 48.0 | 3.2 | 5.7 | 17.77 ± 1.96 | #### `copy_10_files_1G_bytes.md` | Command | Mean [ms] | Min [ms] | Max [ms] | User [ms] | System [ms] | Relative | |:------------------------------------------------------------------------------------|-------------:|---------:|---------:|----------:|------------:|---------------:| | *`./target/release/cpz /tmp/ftzz /tmp/ftzzz`* | 1.3 ± 0.2 | 1.1 | 2.2 | 0.8 | 2.1 | 1.00 | | `fcp /tmp/ftzz /tmp/ftzzz` | 1.5 ± 0.1 | 1.3 | 1.9 | 1.1 | 3.1 | 1.11 ± 0.15 | | `./target/release/cp_rayon /tmp/ftzz /tmp/ftzzz` | 1.9 ± 0.2 | 1.5 | 7.6 | 1.4 | 3.9 | 1.39 ± 0.23 | | `cp -r /tmp/ftzz /tmp/ftzzz` | 1.9 ± 0.4 | 1.6 | 2.7 | 0.5 | 1.3 | 1.40 ± 0.31 | | `./target/release/cp_stdlib /tmp/ftzz /tmp/ftzzz` | 3.0 ± 0.1 | 2.8 | 3.2 | 0.7 | 2.1 | 2.23 ± 0.26 | | `xcp -r /tmp/ftzz /tmp/ftzzz` | 3.4 ± 0.4 | 2.7 | 11.4 | 1.8 | 3.6 | 2.55 ± 0.40 | | `sh -c '(cd /tmp/ftzz; tar cf - .) \| (mkdir /tmp/ftzzz; cd /tmp/ftzzz; tar xf -)'` | 304.3 ± 14.9 | 297.9 | 346.4 | 83.4 | 449.5 | 225.47 ± 27.89 | | `rsync -rlp --inplace /tmp/ftzz /tmp/ftzzz` | 1042.4 ± 1.7 | 1040.5 | 1045.6 | 1529.1 | 350.0 | 772.37 ± 87.80 |