String golang-比较两个txt文件
我想知道文件更改时的内容 有一个simeple txt文件String golang-比较两个txt文件,string,text,go,slice,String,Text,Go,Slice,我想知道文件更改时的内容 有一个simeple txt文件 textOne 1,2,3,4,5,6,7,8,9,10 我把它改成 textTwo 1,2,3,4,7,7,7,8,9,10 因此,“1”和“5,6”改为“2”,“7,7” 我能找到循环改变的东西。但我想知道是否有更好的方法来检查而不是循环使用标准的第三方库,并进行少量优化 我过去使用过的一个库是(与@Not_a_golfer在评论中建议的库相同) 您可以通过首先计算两个文件的sha2散列来优化这一点,如果它们不相同,您可以假定它
textOne 1,2,3,4,5,6,7,8,9,10
我把它改成
textTwo 1,2,3,4,7,7,7,8,9,10
因此,“1”和“5,6”改为“2”,“7,7”
我能找到循环改变的东西。但我想知道是否有更好的方法来检查而不是循环使用标准的第三方库,并进行少量优化 我过去使用过的一个库是(与@Not_a_golfer在评论中建议的库相同) 您可以通过首先计算两个文件的
sha2
散列来优化这一点,如果它们不相同,您可以假定它们已更改,否则(可能)它们相同,并跳过diff操作
这种优化的一个缺点是,由于鸽子洞原理,理论上对于不同的内容可能有相同的散列值。但是,发生这种情况的可能性很小
编辑(基于@elithrar的评论):
由于对非常大的文件进行哈希计算,可能会非常耗时。您可以分块计算
sha2
(大小取决于sha2
系列中的特定哈希算法)。这使您能够尽早退出,并提高速度。也许是一个差异库?您还可以使用缓冲读取器读取文件的块(比如4K块),对它们进行散列并进行比较。这避免了散列大文件,提高了速度(您可以提前退出),并且应该避免冲突。SHA-2应该是合适的。此外,滚动散列函数也是一件事,因此,如果你想获得最大性能,那就是最好的选择。如果核心算法还没有在Go中实现,我会感到惊讶。