gpt4 book ai didi

c++ - 循环、功能设计和效率 : two questions

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:56 25 4
gpt4 key购买 nike

我有两个相关问题,一个是一般性的,一个是针对我正在从事的项目的。

  1. 一般来说,如果我有一个包含大量迭代(数百万次)且某些代码部分在特定条件下执行的循环,那么一个循环包含多个条件语句更好(效率更高)还是多个循环没有它们更好(更有效)。例如。

示例 1:

while (something())
{
// some common code
if (condition_a)
// some code
if (condition_b)
// some code
// some more common code
}

示例 2:

if (condition_a && condition_b)
{
while (something())
{
// some common and specific code
}
}
else if (condition_a)
while (something()) //..
else if (condition_b)
// Another loop
else //...

似乎示例 2 会以冗余为代价产生更高效的代码,因为条件只检查一次而不是上百万次。如果通用代码很大,或者有很多可能的条件,这似乎非常多余。

  1. 现在谈谈我的具体问题。我有一个从文件中读取点并将它们插入数据结构的函数。它看起来像这样:

    while (reader->read_point) { //做一些事情 //插入点

问题是有几个读取点的函数应该根据用户提供的标准来使用。例如read_point_inside_circle(), read_point_inside_rectangle()等

理想情况下,我想使用一个函数指针来事先决定正确的函数,但是我认为这是不可能的,因为 reader 是 Reader 类的一个实例(如果有可能以某种方式解决我所有的问题) .

在这种情况下,如果我有多个仅条件不同的循环会更好,还是我应该使用多个 if 语句来避免冗余代码,例如。

for(;;)
{
if (read_every_point)
if(!reader->read_point())
break;
else if (read_inside_circle)
if(!reader->read_inside_circle())
break;
else if // ...
}

最佳答案

回答您的具体问题:读取文件所花费的时间将超过在 if/else 中花费的时间。写任何更具可读性的东西。这通常更有效,并且在证明它是瓶颈之前不要对其进行优化。

回答你的一般问题:取决于很多事情,现代编译器非常擅长独立于你的直觉高效地做事。因此,在您拥有针对特定编译器和体系结构的工作代码之前,这是一个理论讨论。

关于c++ - 循环、功能设计和效率 : two questions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019157/

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