【问题标题】:writing for loop as goto, will improve speed?将for循环写为goto,会提高速度吗?
【发布时间】:2011-12-25 21:38:08
【问题描述】:

根据优化,将for循环写成goto会提高速度吗?

我尝试将 for 循环写为 goto,但我想知道是否有任何 run_time 加速?

前:

  for ( .. ) { 


  }

  as

  A:


  if ( ... ) 
       goto A

【问题讨论】:

  • 试一试,确保两者工作相同,比较程序集。
  • @Mat,你是想说他们是一样的吗?
  • @opalgo,自己试试吧,这样您就可以通过自己的构建设置确定。

标签: c optimization


【解决方案1】:

没有。

在机器级别,只有 goto 语句(嗯,跳转,真的),并且编译器在优化循环(例如,通过循环展开等技术)时通常比任何人都做得更好,因为它对底层架构有更好的了解。

这并不是说 goto 没有用——在某些情况下它非常有用。只是不是为了实现循环。不过,如果您想在循环语句中输入,则可以使用它。

【讨论】:

    【解决方案2】:

    几乎可以肯定不会。这些天编译器优化器非常好。

    【讨论】:

      【解决方案3】:

      如果您使用 gcc 或其他现代编译器,它更有可能执行更差,因为大多数现代编译器使用 loop unrolling [以及其他优化] 优化您的循环。

      【讨论】:

        【解决方案4】:

        尝试手动优化您的代码是个坏主意:现代编译器能够优化您的代码,并且会比您做得更好。但是编译时不要忘记开启优化...

        另外,使用 goto 语句而不是循环将使您的代码不可读:循环的意图丢失了,因此代码更难掌握。这要求以后进行维护噩梦。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多