首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个循环比其中几个更好吗?

一个循环比其中几个更好吗?
EN

Stack Overflow用户
提问于 2017-04-02 19:27:56
回答 1查看 134关注 0票数 0

我一直在致力于BigInteger的实现,当我考虑添加解决方案时,我决定使用更干净的解决方案,它考虑在函数中添加相应的数字,并在以后对它们进行“规范化”。如下面的示例所示

999 999 + 111 111 = 10 10 10 (加法后的价值) =1 111 110 (正常化后的数值)

但从那以后,我想知道它是如何影响程序的效率的。几个循环做一些小事情,每个循环比一个大嵌套循环的工作速度更快吗?

例如,使用

代码语言:javascript
复制
int a[7]={0,9,9,9,9,9,9};
int b[7]={0,1,1,1,1,1,1};
int c[7];

是这个吗,

代码语言:javascript
复制
for(int q=0; q<7; ++q){
    c[q]=a[q]+b[q];
    if(c[q]>9){
        c[q-1]=c[q]/10;
        c[q]%=10;
    }
}

比这更好

代码语言:javascript
复制
for(int q=0; q<7; ++q){
    c[q]=a[q]+b[q];
}
for(int q=0;q<7;++q){
    if(c[q]>9){
        c[q-1]=c[q]/10;
        c[q]%=10;
    }
}

那么更大的循环呢,在每次迭代中有更多的事情要经历呢?

UPD.

正如有人建议的那样,我确实测量了这两个示例的性能时间。对于两个循环,平均时间(100百万)。元素)~4.85秒。一圈~3.72秒

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-03 19:40:45

很难判断这两种方法中哪一种会更有效。它可能因C++编译器供应商而异,在单个供应商中也可能有所不同,不同版本的编译器。

底线是:

  1. 除非你做基准测试,否则你永远不会知道。
  2. 和往常一样,几乎可以肯定,不管怎么说,这都无关紧要,在绝大多数情况下,您很可能过分地关心性能,就像绝大多数程序员一样。
  3. 到头来,最重要的是什么更易读和更易于维护。代码可维护性比节省时钟周期更重要的是。
  4. 如果你决定走“什么更易读”的明智道路,请记住,不同的人会发现不同的东西更易读。例如,当我阅读代码时,我个人讨厌惊喜,所以我会很生气地阅读您的第一个循环,它允许小数位在0-9范围外接收错误的值,但后来发现您终于用另一个循环对此进行了修改。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43172611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档