论直接取模与手写取模函数的时间差异

最近在多校题解中经常看到巨巨们手写函数进行取模操作,似乎是比%操作更快。

%操作在计算机中的实现依靠除法,显然不如手写函数的加减法更优秀。

在进行多次加法更新取模的时候,可以写一发。不过当算法复杂度在O(n)以上的时候,这个优化意义不大。

 1 #include <cstdio>
 2 
 3 const int maxn = 5e8+11;
 4 const int MOD = 1e9+7;
 5 typedef long long LL;
 6 
 7 inline void update(LL &x,LL d)
 8 {
 9     x += d;
10     if(x >= MOD) x -= MOD;
11     if(x < 0) x += MOD;
12 }
13 
14 int main()
15 {
16     LL ans = 0;
17     printf("update()\n");
18     for(int i=0;i<maxn;i++)
19     {
20         //ans += i;
21         //ans %= MOD;
22         update(ans,i);
23     }
24     printf("%I64d\n",ans);
25 }

 

看起来优化了很多的样子

cpu是i5-4300u

 

posted @ 2016-08-05 19:44  Helica  阅读(696)  评论(0编辑  收藏  举报