Zitat von CrocodileDundee: |
Welche davon ist denn (zumindest tendenziell) die schnellste Methode? |
Ich hab damals
QuickIO entwickelt, weil ich ähnliche Probleme mit vielen kleinen Dateien und SMB hatte
(Projekt ist nicht mehr aktiv, weil es so mit der Zukunft mit .NET Core und .NET 5 nicht funktioniert und man grundlegend neu machen müssten).
Alle deine Drei Varianten verwenden unter der Haube (im Prinzip) den selben Mechanismus. Sie unterscheiden sich eigentlich nur im Overhead.
Die schnellste Variante direkt mit Windows Boardmitteln ist
CopyFile aus Win32, was ich auch für QuickIO verwendet habe.
Es gibt keine Möglichkeit direkt von .NET aus mit CopyFile zu arbeiten, ohne zusätzlichen Overhead zu haben, auch File.Copy() hat einen Overhead, der gerade bei vielen kleinen Dateien enorm viel Zeit kostet (Attribute checks etc..).
Bleibt für Dich:
- CopyFile via PInvoke zu verwenden
- .NET Mittel verwenden und mit Overhead leben