我希望能够在VB.NET中比较两个长的字节数组,但遇到了问题。比较两个50兆字节的文件需要将近两分钟的时间,因此我显然做错了什么。我使用的是以下代码,现在想要进行更改:
我需要能够尽快比较潜在达到数百兆甚至可能达到一两个千兆的文件。有什么建议或算法能更快地完成这项任务吗?
[更新]
我将数组转换为Byte()的本地变量,然后进行了同样的比较,使用相同的代码,运行时间只需一秒钟(我仍需要对其进行基准测试并与其他结果进行比较),但是如果您使用本地变量并使用通用数组执行相同操作,则速度会大幅降低。我不确定为什么会这样,但这让我对数组的使用产生了更多的疑问。
_Bytes
和item.Bytes
是要比较的两个不同数组,并且它们已经具有相同的长度。For Each B In item.Bytes
If B <> _Bytes(I) Then
Mismatch = True
Exit For
End If
I += 1
Next
我需要能够尽快比较潜在达到数百兆甚至可能达到一两个千兆的文件。有什么建议或算法能更快地完成这项任务吗?
Item.bytes
是从数据库/文件系统中获取的对象,用于与要添加的项目进行比较,因为它的字节长度与用户想要添加的项目匹配。通过比较这两个数组,我可以确定用户是否向数据库添加了新内容,如果没有,则可以将它们映射到其他文件而不浪费硬盘空间。[更新]
我将数组转换为Byte()的本地变量,然后进行了同样的比较,使用相同的代码,运行时间只需一秒钟(我仍需要对其进行基准测试并与其他结果进行比较),但是如果您使用本地变量并使用通用数组执行相同操作,则速度会大幅降低。我不确定为什么会这样,但这让我对数组的使用产生了更多的疑问。