gpt4 book ai didi

ios - arm64 objectForKey 性能异常?

转载 作者:可可西里 更新时间:2023-11-01 06:08:06 26 4
gpt4 key购买 nike

长话短说,我正在查看我的 32 位 iPhone 应用程序中的性能问题。在此过程中,我删除了将我限制为 32 位的第 3 方库,当我为 arm64 构建时,我发现与所述库无关的一段代码速度提高了 2 倍。

我的印象是简单地将 arm64 添加到有效架构中不会带来显着的性能提升,所以我想知道我的案例是否只是一个异常现象。

在将我的应用程序减少到几十行以显示性能差异的过程中,我失去了一些 yield ,但它仍然很重要。字典键中字符的数量和键中对象数量的混合等看似微小的变化会产生很大的不同。

以下代码是示例应用程序的全部 - 放置在 viewDidLoad 中。使用 Xcode 5.1 使用 arm64 构建,在我的 iPhone 5s (iOS 7.1) 上运行,检索 2075 个字典对象的平均时间约为 0.6 秒,构建 armv7s,约为 1.0 秒。

对于普遍可以利用的性能改进是否有简单的解释?

#define NUM_DICT_ENTRIES 2075
NSMutableDictionary *aDict = [[NSMutableDictionary alloc] init];
NSDictionary *keyDictionary;
for (int i = 0; i < NUM_DICT_ENTRIES; i++) {
if (arc4random_uniform(2)) {
keyDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[[NSProcessInfo processInfo] globallyUniqueString], @"entry",
[[NSProcessInfo processInfo] globallyUniqueString], @"category", nil];
} else {
keyDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[[NSProcessInfo processInfo] globallyUniqueString], @"entry",
[[NSProcessInfo processInfo] globallyUniqueString], @"category",
[[NSProcessInfo processInfo] globallyUniqueString], @"article", nil];
}
NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:[[NSProcessInfo processInfo] globallyUniqueString],@"xyzzy", nil];
[aDict setObject:d forKey:keyDictionary];
}

#define NUM_ITERATIONS 10

NSTimeInterval runTime = 0;

for (int i = 0; i < NUM_ITERATIONS; i++) {
NSDate *start = [NSDate date];

for (NSDictionary *keyDictionary in aDict) {
[[aDict objectForKey:keyDictionary] objectForKey:@"xyzzy"];
}

runTime += [[NSDate date] timeIntervalSinceDate:start];
}

NSLog(@"average of %d iterations = %f", NUM_ITERATIONS, runTime/NUM_ITERATIONS);

最佳答案

很难说这次测试具体改进了什么。 arm64 与 armv7 有许多变化会影响性能。一些例子:

  • arm64 对某些类型使用 Objective-C 标记的指针对象。使用这些类型的代码可能会更快或使用更少的内存。
  • arm64 将大多数对象的 Objective-C 保留计数存储在对象本身而不是单独的表中。执行大量保留/释放流量的代码可能会更快。
  • arm64 指令集对某些操作更有效。执行正确类型的数学或内存操作的代码可能会更快。
  • arm64的64位指针占用内存较多。指针密集且内存受限的代码可能会更慢。

两个版本的仪器跟踪可能会发现性能差异。

关于ios - arm64 objectForKey 性能异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com