通过NSFileManager进行文件属性访问的速度是iPhone 5S的两倍,而不是iPhone 5

时间:2013-11-08 16:04:44

标签: ios iphone objective-c

我几乎到处寻找这种奇怪情况的可能答案,没有运气。我有1000个文件(每个14个字节,用于测试目的)位于我的应用程序的Documents目录中的文件夹中。使用下面的代码,我获取文件夹的内容,遍历每个文件URL,创建一个表示名为FFFile的文件的自定义模型对象,并将其创建到容器数组中。为清楚起见,我简化了这种方法。

这一切都运行良好并且符合我的预期,但是,最奇怪的部分是这个代码需要0.775秒才能在iPhone 5上执行,而WHOPPING需要2.378秒才能在iPhone 5S上执行!一般的假设是iPhone 5S会更快,不是吗?两个设备都使用完全相同的文件,文件夹结构,代码等...

我不太了解iPhone 5S的64位架构如何影响以下代码的性能,所以对这个奇怪的案例(对我来说很奇怪)的任何见解都将非常感激。谢谢你看看。

更新:iPhone 5和iPhone 5S都运行iOS 7.0.3。

static NSArray *keys;
keys = @[
         NSURLNameKey,
         NSURLTypeIdentifierKey,
         NSURLLocalizedTypeDescriptionKey,
         NSURLIsDirectoryKey,
         NSURLCreationDateKey,
         NSURLContentModificationDateKey,
         NSURLFileSizeKey,
         ];

// url = ".../Documents/Folder/";

NSMutableArray *fileContainer = [NSMutableArray new];
NSArray *results = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:url includingPropertiesForKeys:keys options:0 error:nil];
for (NSURL *url in contents) {

    NSDictionary *properties = [url resourceValuesForKeys:keys error:nil];

    FFFile *file = [[FFFile alloc] init];
    file.fileURL          = url;
    file.isDirectory      = [properties[NSURLIsDirectoryKey] boolValue];
    file.filename         = properties[NSURLNameKey];
    file.fileSize         = properties[NSURLFileSizeKey];
    file.typeIdentifier   = properties[NSURLTypeIdentifierKey];
    file.typeDescription  = properties[NSURLLocalizedTypeDescriptionKey];
    file.creationDate     = properties[NSURLCreationDateKey];
    file.modificationDate = properties[NSURLContentModificationDateKey];

    [fileContainer addObject:file];
}

0 个答案:

没有答案