最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:
项目是.NET CORE,所以使用C#进行编写比较方法
文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式...下面我们开始尝试各个比较方法,选出最优的解决方案:
比较两个文件是否完全相同,首先想到的是用哈希算法(如MD5,SHA)算出两个文件的哈希值,然后进行比较....Elapsed: 00:00:05.7933178
耗时5.79秒,感觉还不错.然而,这是最佳的解决方案吗?
其实我们仔细想一下,答案应该是否定的....看来有时候看起来笨拙的方法反而效果更好!
试验到此,比较两个900多MB的文件耗时1.5秒左右,读者对于该方法是否满意呢?
No!我不满意!我相信通过努力,一定会找到更快的方法的!...同样.NET CORE也在为了编写高性能代码而不断的优化中.
那么,我们如何继续优化我们的代码呢?