ฉันต้องซิงค์ไฟล์ขนาดใหญ่ในเครื่องบางเครื่อง ไฟล์สามารถมีขนาดสูงสุด 6GB การซิงค์จะดำเนินการด้วยตนเองทุกสองสามสัปดาห์ ฉันไม่สามารถนำชื่อไฟล์มาพิจารณาเพราะพวกเขาสามารถเปลี่ยนแปลงได้ตลอดเวลา
แผนของฉันคือสร้าง checksums บนพีซีปลายทางและบนพีซีต้นทางแล้วคัดลอกไฟล์ทั้งหมดที่มี checksum ซึ่งไม่ได้อยู่ในปลายทางไปยังปลายทางแล้ว ความพยายามครั้งแรกของฉันคือสิ่งนี้:
using System.IO;
using System.Security.Cryptography;
private static string GetChecksum(string file)
{
    using (FileStream stream = File.OpenRead(file))
    {
        SHA256Managed sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(stream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
ปัญหาคือรันไทม์: 
- ด้วย SHA256 พร้อมไฟล์ 1,6 GB -> 20 นาที
- ด้วย MD5 พร้อมไฟล์ 1,6 GB -> 6.15 นาที
มีวิธีที่ดีกว่า - เร็วกว่าในการรับเช็คซัม (หรืออาจใช้ฟังก์ชันแฮชที่ดีกว่า)