gpt4 book ai didi

performance - 在迭代中放置条件语句是一种不好的做法吗?

转载 作者:行者123 更新时间:2023-12-05 02:18:24 26 4
gpt4 key购买 nike

那么让我们考虑以下代码段的情况:

if(x == 0)
{
for(var i = 0; i < 5; ++ i)
{
//do something
}
}
else
{
for(var i = 0; i < 5; ++ i)
{
//do something different
}
}

如您所见,这两个条件都遍历同一个 for 循环,但根据条件执行不同的操作。我的问题是,有这样的事情是不是一种不好的做法:

for(var i = 0; i < 5; ++ i)
{
if(x == 0){
// do something
}else{
// do something else
}
}

我认为这可能是一种不好的做法的原因是,对于循环的每个实例,都会针对第一个片段执行条件检查,首先检查他的条件,然后再检查循环被执行。我错了吗?

最佳答案

除非您正在编写必须高速运行且非常高效的代码,否则请追求代码的可读性而不是效率。在这种情况下,我会说第二个示例更清晰,因为它的代码更少,并且是一种普遍遵循的模式。

我认为另一个需要考虑的因素是,第二个示例似乎暗示 x 可能会更改值,而第一个示例则没有。这值得在附近发表评论来解释选择。

我的直觉会同意你的看法,第一个示例会更有效率,但实际上编译器的优化可能会缩短上述示例的工作时间 - 它们的性能可能相等。

这是一个 pretty impressive list可以在循环上进行的优化,给你一个想法,还有 branch optimisation (参见答案),如果循环运行多次迭代可能会产生影响。

关于performance - 在迭代中放置条件语句是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45297599/

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