OS X:与图像比较使用所有处理器

OS X: comparing to images use all the processor

我需要比较大约 2000 张图像,但循环进入图像会使用所有处理器。

以下是我比较图像的方式:

NSImage *file = [[NSImage alloc] initWithContentsOfFile:path];
NSImage *fileTwo = [[NSImage alloc] initWithContentsOfFile:pathTwo];
NSData *imgDataOne = [file TIFFRepresentation];
NSData *imgDataTwo = [fileTwo TIFFRepresentation];

if ([imgDataOne isEqualToData: imgDataTwo])
{
    NSLog(@"is the same image");
}

我在比较中做错了,或者我如何在不接管我的计算机处理器的情况下比较图像?

最快的方法是获取所有文件的列表,然后为每个文件获取其大小,然后说大小不同的文件不能相等。这很快,因为它甚至不需要您从磁盘读取文件。

一旦找到两个或更多大小相同的文件,您可以对它们进行 MD5 校验和以查看内容是否相同 - 如果您在计算它们时存储 MD5 校验和,它再次比比较每对文件要快文件,因为您只读取每个文件一次。

当然没有必要为每个文件创建TIFFRepresentation...