gpt4 book ai didi

Swift微优化: multiple if statements where fall-though will not occur vs if else if

转载 作者:行者123 更新时间:2023-11-30 13:02:48 24 4
gpt4 key购买 nike

如果存在差异,哪些技术会导致执行速度更快?为什么?

使用 if 语句只允许计算 numberOnePlusOne 一次。

func test(numberOne:Int, numberTwo:Int) {
if numberOne == numberTwo {
return
}
let numberOnePlusOne = numberOne + 1
if numberOnePlusOne == numberTwo && numberOnePlusOne < numberTwo {
return
} else {
return
}
}

因此,如果使用 if else if 是有益的,我认为好处是告诉编译器这些 block 在没有操作的情况下不能失败。

func test(numberOne:Int, numberTwo:Int) {
if numberOne == numberTwo {
return
} else if numberOne + 1 == numberTwo && numberOne + 1 < numberTwo {
return
} else {
return
}
}

最佳答案

If there is a difference which of these techniques is results in faster execution and why?

如果您认为 LLVM 字节码是一种中间语言,其翻译会产生特定于机器的机器语言(例如编译为 x86 或 ARM 机器代码)或行为(解释),那么这个问题的答案应该很清楚:

有些机器在某些方面比其他机器更快。一个可能会更快地进行分支,而另一个可能会将分支预测电路专用于额外的高速缓存。

基本上,您的问题的问题是您要求综合基准,大概这样您就可以编写针对过早优化的代码。相反,您应该编写易于维护的代码,并使用分析器来识别最重要的瓶颈。在此基础上进行优化,然后再次进行分析以确保正确。找到下一个瓶颈,冲洗,重复并起泡沫。这种方法有很多好处:

  • 最重要的是,您将花费更少的时间来实现最佳优化;这正在优化您的时间。
  • 您不会通过微优化猜测来插入更重要的优化。一些优化可以防止其他优化......
  • 您的代码将更加清晰易读。

如果可能的话,我建议您针对每个系统进行这样的优化。在这种情况下,我非常怀疑这可能是任何实际代码中的重大瓶颈,并且我相信基于 LLVM 的高质量编译器可以将这两者优化为相同的机器代码。 .考虑到它可以提前执行死代码分析。

关于Swift微优化: multiple if statements where fall-though will not occur vs if else if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738119/

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