UOJ Logo stalin的博客

博客

循环展开?

2017-05-02 15:12:13 By stalin
                while (++i<=r)
               {   a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                    if (++i<=r) a[i]+=t;
                }
  这样也可以循环展开????

评论

WrongAnswer
我们需要邀请常数大师@immortalCO来回答。
Lucida
根据松爷给的定义:“将循环分成多个部分,并且每个部分之间互相独立的变换方法叫做循环展开” 为什么感觉这个不符合的样子,,大家觉得呢
613
可以是可以,效果不好,但总比没有强
Sengxian
使用 switch 语句的效率比 if 高。 ```cpp register n = (count + 7) / 8; switch(count % 8) { case 0: do { a[i] += t; case 7: a[i] += t; case 6: a[i] += t; case 5: a[i] += t; case 4: a[i] += t; case 3: a[i] += t; case 2: a[i] += t; case 1: a[i] += t; } while(--n > 0); } ```

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。