Skip to content

Latest commit

 

History

History

comparisons

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

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

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(</tmp/ftzz/*>){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(</tmp/ftzz/*>){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(</tmp/ftzz/*>){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

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

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