C 我是否使用循环来迭代较小大小的数组(比如2或3)?
考虑一下这个简单的问题: 假设我有一个1x4数组。我必须给每个元素加5。那么建议使用循环。除去代码因素的大小和良好的代码组织,是否还有其他理由我应该使用循环?它会不会比执行4条直线的代码花费更多的时间,我在其中为每个元素添加5条代码,因为控件必须返回5次&更改循环变量的值?如果我们考虑一个1x2数组怎么办?然后我们甚至没有大小问题,两种类型的代码都由两行组成C 我是否使用循环来迭代较小大小的数组(比如2或3)?,c,performance,loops,C,Performance,Loops,考虑一下这个简单的问题: 假设我有一个1x4数组。我必须给每个元素加5。那么建议使用循环。除去代码因素的大小和良好的代码组织,是否还有其他理由我应该使用循环?它会不会比执行4条直线的代码花费更多的时间,我在其中为每个元素添加5条代码,因为控件必须返回5次&更改循环变量的值?如果我们考虑一个1x2数组怎么办?然后我们甚至没有大小问题,两种类型的代码都由两行组成 虽然我用C语言标记这个问题,但我也想用其他语言了解这个问题。这是一个微观优化。如果您不必在循环级别上进行保存,那么就不必担心展开这样的循环
虽然我用C语言标记这个问题,但我也想用其他语言了解这个问题。这是一个微观优化。如果您不必在循环级别上进行保存,那么就不必担心展开这样的循环。重要的因素是可读性和可维护性。对于两次迭代的循环,我认为您不需要通过添加循环来增加可读性。您真的不需要担心这一点。以您认为更容易阅读的方式编写,然后让编译器决定是否需要执行一些循环展开优化。相信编译器供应商,他们的开发人员非常擅长理解这些与优化相关的东西…当您举这些小例子时,不应该为代码的性能操心太多。。。以更容易理解的方式编写代码
使用循环为您提供了一种缩放示例的方法,无需在任何地方进行重大更改。ah。。我不知道编译器优化了这类问题:)@gopi1410如果你知道有多少优化会让你大吃一惊。GGCC有。例如,如果printf()调用只有一个不带格式参数的常量字符串参数,它甚至会将对printf()的调用替换为对put()的调用。我不担心这种情况的性能,我知道无论使用哪种工具,执行时间都无所谓。我想知道的是,在大型测试用例的情况下,哪一个是首选的。看看编译器的功能,不要再担心低级优化了。我几乎所有的情况下,编译器都会为您修复它。