我一直在致力于BigInteger的实现,当我考虑添加解决方案时,我决定使用更干净的解决方案,它考虑在函数中添加相应的数字,并在以后对它们进行“规范化”。如下面的示例所示
999 999 + 111 111 = 10 10 10 (加法后的价值) =1 111 110 (正常化后的数值)
但从那以后,我想知道它是如何影响程序的效率的。几个循环做一些小事情,每个循环比一个大嵌套循环的工作速度更快吗?
例如,使用
int a[7]={0,9,9,9,9,9,9};
int b[7]={0,1,1,1,1,1,1};
int c[7];是这个吗,
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;
}
}比这更好
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秒
发布于 2017-04-03 19:40:45
很难判断这两种方法中哪一种会更有效。它可能因C++编译器供应商而异,在单个供应商中也可能有所不同,不同版本的编译器。
底线是:
https://stackoverflow.com/questions/43172611
复制相似问题