gpt4 book ai didi

arrays - Swift 数组边界检查优化是如何工作的

转载 作者:行者123 更新时间:2023-11-28 07:59:14 25 4
gpt4 key购买 nike

我在看WWDC 2015 session 409 - Optimizing Swift Performance .它提到 Swift 确保数组访问在边界内发生。 Swift 可以将检查从循环中解除。因此 O(n) 次检查变为 O(1)。

演讲中的示例如下所示:

//Before Optimization
for i in 0..<n {
precondition (i < length)
A[i] ^= 13
}

//After Optimization
precondition (i < length)
for i in 0..<n {
A[i] ^= 13
}

根据我的理解,编译器应该在编译代码时执行所谓的数组边界检查。但是当我使用以下代码进行测试时,我没有看到编译器的警告。相反,它在运行时崩溃了。

 var a = Array(1...5)

for i in 0..<6 {
a[i] ^= 13
}

而且我确实在Build Settings 下将Disable Safety Checks 设置为No。我认为这应该打开数组边界检查。任何人都知道为什么?

最佳答案

演讲中的示例显示了 precondition() 的使用,但您的代码似乎没有使用 precondition()

关于arrays - Swift 数组边界检查优化是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47143883/

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