Benchmark numbers with Dev Drive perf fixes for large file cloning: The fixes bring the cost of File.Copy
close to the CoW package results particularly for large files. Windows Insider Preview Jan 2024 with prerelease CoW-in-Win32 feature flag turned on. Win11 23H2 10.0.26020.1000, 16-core Azure AMD v5 VM.
ExtentsOnly
= Files to be copied/cloned were created only by setting the file extents.
WroteData
= Files were also written to. ReFS/Dev Drive behaves differently in this case.
BenchmarkDotNet v0.13.12, Windows 11 (10.0.26020.1000) (Hyper-V) AMD EPYC 7763, 1 CPU, 16 logical and 8 physical cores .NET SDK 6.0.417 [Host] : .NET 6.0.26 (6.0.2623.60508), X64 RyuJIT AVX2 Job-DIYMKO : .NET 6.0.26 (6.0.2623.60508), X64 RyuJIT AVX2
Method | FileSize | FileContents | Mean | Error | StdDev | Median | Ratio | RatioSD |
---|---|---|---|---|---|---|---|---|
File.Copy | 0 | ExtentsOnly | 228.7 us | 7.45 us | 21.25 us | 230.1 us | 1.00 | 0.00 |
CoW | 0 | ExtentsOnly | 184.1 us | 4.07 us | 11.69 us | 184.7 us | 0.81 | 0.09 |
File.Copy | 0 | WroteData | 225.0 us | 6.61 us | 18.96 us | 227.6 us | 1.00 | 0.00 |
CoW | 0 | WroteData | 180.8 us | 4.20 us | 12.04 us | 178.9 us | 0.81 | 0.08 |
File.Copy | 1 | ExtentsOnly | 402.1 us | 8.04 us | 15.29 us | 407.7 us | 1.00 | 0.00 |
CoW | 1 | ExtentsOnly | 729.1 us | 21.00 us | 60.58 us | 728.0 us | 1.82 | 0.13 |
File.Copy | 1 | WroteData | 411.2 us | 8.14 us | 19.67 us | 412.2 us | 1.00 | 0.00 |
CoW | 1 | WroteData | 745.9 us | 19.52 us | 56.31 us | 741.0 us | 1.83 | 0.15 |
File.Copy | 1024 | ExtentsOnly | 427.0 us | 7.38 us | 6.54 us | 429.5 us | 1.00 | 0.00 |
CoW | 1024 | ExtentsOnly | 694.6 us | 13.84 us | 32.89 us | 690.9 us | 1.63 | 0.07 |
File.Copy | 1024 | WroteData | 399.3 us | 7.93 us | 18.23 us | 399.7 us | 1.00 | 0.00 |
CoW | 1024 | WroteData | 710.4 us | 18.48 us | 53.32 us | 700.8 us | 1.80 | 0.16 |
File.Copy | 16384 | ExtentsOnly | 357.9 us | 7.10 us | 18.95 us | 363.1 us | 1.00 | 0.00 |
CoW | 16384 | ExtentsOnly | 273.8 us | 5.45 us | 12.96 us | 274.5 us | 0.77 | 0.06 |
File.Copy | 16384 | WroteData | 346.9 us | 9.04 us | 25.64 us | 354.5 us | 1.00 | 0.00 |
CoW | 16384 | WroteData | 286.5 us | 11.16 us | 32.19 us | 274.3 us | 0.83 | 0.10 |
File.Copy | 262144 | ExtentsOnly | 354.8 us | 7.37 us | 21.02 us | 360.8 us | 1.00 | 0.00 |
CoW | 262144 | ExtentsOnly | 273.6 us | 5.45 us | 13.87 us | 273.6 us | 0.78 | 0.07 |
File.Copy | 262144 | WroteData | 359.0 us | 7.17 us | 19.14 us | 363.4 us | 1.00 | 0.00 |
CoW | 262144 | WroteData | 270.7 us | 5.40 us | 12.94 us | 269.0 us | 0.75 | 0.06 |
File.Copy | 1048576 | ExtentsOnly | 349.4 us | 8.64 us | 24.36 us | 356.9 us | 1.00 | 0.00 |
CoW | 1048576 | ExtentsOnly | 281.9 us | 5.65 us | 15.75 us | 279.3 us | 0.81 | 0.07 |
File.Copy | 1048576 | WroteData | 361.3 us | 8.60 us | 24.39 us | 365.3 us | 1.00 | 0.00 |
CoW | 1048576 | WroteData | 277.0 us | 5.54 us | 9.99 us | 277.2 us | 0.76 | 0.06 |
File.Copy | 16777216 | ExtentsOnly | 391.9 us | 9.73 us | 27.75 us | 398.2 us | 1.00 | 0.00 |
CoW | 16777216 | ExtentsOnly | 310.6 us | 5.82 us | 5.72 us | 308.9 us | 0.80 | 0.06 |
File.Copy | 16777216 | WroteData | 424.9 us | 14.11 us | 40.47 us | 422.6 us | 1.00 | 0.00 |
CoW | 16777216 | WroteData | 393.6 us | 8.86 us | 24.85 us | 390.4 us | 0.94 | 0.10 |
Method | FileSize | FileContents | Mean | Error | StdDev | Median | Ratio | RatioSD |
---|---|---|---|---|---|---|---|---|
File.Copy | 0 | ExtentsOnly | 227.7 us | 7.41 us | 21.27 us | 232.2 us | 1.00 | 0.00 |
CoW | 0 | ExtentsOnly | 192.8 us | 3.92 us | 11.00 us | 190.3 us | 0.85 | 0.09 |
File.Copy | 0 | WroteData | 233.2 us | 5.76 us | 16.25 us | 236.8 us | 1.00 | 0.00 |
CoW | 0 | WroteData | 202.7 us | 4.02 us | 9.23 us | 201.8 us | 0.87 | 0.08 |
File.Copy | 1 | ExtentsOnly | 420.7 us | 7.96 us | 9.48 us | 424.3 us | 1.00 | 0.00 |
CoW | 1 | ExtentsOnly | 695.7 us | 17.11 us | 47.69 us | 694.7 us | 1.70 | 0.12 |
File.Copy | 1 | WroteData | 419.9 us | 8.35 us | 17.05 us | 419.2 us | 1.00 | 0.00 |
CoW | 1 | WroteData | 671.5 us | 19.24 us | 54.91 us | 674.1 us | 1.62 | 0.16 |
File.Copy | 1024 | ExtentsOnly | 438.0 us | 8.74 us | 15.76 us | 435.4 us | 1.00 | 0.00 |
CoW | 1024 | ExtentsOnly | 716.9 us | 15.63 us | 44.09 us | 710.8 us | 1.67 | 0.12 |
File.Copy | 1024 | WroteData | 419.8 us | 8.23 us | 10.40 us | 422.8 us | 1.00 | 0.00 |
CoW | 1024 | WroteData | 719.3 us | 17.08 us | 49.00 us | 708.9 us | 1.77 | 0.13 |
File.Copy | 16384 | ExtentsOnly | 367.1 us | 7.28 us | 17.57 us | 369.3 us | 1.00 | 0.00 |
CoW | 16384 | ExtentsOnly | 293.2 us | 5.80 us | 12.10 us | 294.8 us | 0.80 | 0.05 |
File.Copy | 16384 | WroteData | 361.2 us | 7.16 us | 13.09 us | 363.2 us | 1.00 | 0.00 |
CoW | 16384 | WroteData | 298.5 us | 9.07 us | 25.88 us | 290.3 us | 0.88 | 0.07 |
File.Copy | 262144 | ExtentsOnly | 370.1 us | 7.37 us | 17.66 us | 375.5 us | 1.00 | 0.00 |
CoW | 262144 | ExtentsOnly | 327.0 us | 15.29 us | 44.59 us | 318.5 us | 0.92 | 0.12 |
File.Copy | 262144 | WroteData | 370.2 us | 8.79 us | 24.93 us | 373.2 us | 1.00 | 0.00 |
CoW | 262144 | WroteData | 356.6 us | 6.99 us | 13.29 us | 354.0 us | 0.95 | 0.06 |
File.Copy | 1048576 | ExtentsOnly | 367.1 us | 8.22 us | 23.17 us | 367.3 us | 1.00 | 0.00 |
CoW | 1048576 | ExtentsOnly | 359.9 us | 7.06 us | 9.66 us | 357.5 us | 1.00 | 0.06 |
File.Copy | 1048576 | WroteData | 377.2 us | 7.52 us | 16.36 us | 377.6 us | 1.00 | 0.00 |
CoW | 1048576 | WroteData | 296.8 us | 5.87 us | 9.48 us | 298.2 us | 0.78 | 0.04 |
File.Copy | 16777216 | ExtentsOnly | 473.2 us | 9.41 us | 21.23 us | 477.4 us | 1.00 | 0.00 |
CoW | 16777216 | ExtentsOnly | 325.8 us | 11.50 us | 33.18 us | 309.4 us | 0.71 | 0.08 |
File.Copy | 16777216 | WroteData | 410.4 us | 12.86 us | 37.09 us | 407.4 us | 1.00 | 0.00 |
CoW | 16777216 | WroteData | 475.7 us | 8.33 us | 6.96 us | 475.9 us | 1.22 | 0.11 |