int add(x,y)和void add(&x,y)的速度比较
程序员文章站
2022-05-31 17:33:15
...
在不开O2的情况下,void add(&x,y)的速度快于int add(x,y)。且数组整体速度快于vector。
在开O2的情况下,对于数组来说,void快于int;对于vector来说,int快于void。且vector整体速度快于数组。
测试代码:
#include<bits/stdc++.h>
#define maxn 100005
using namespace std;
const int mod = 998244353;
int a[100000005];
vector<int>A(100000005);
inline int add(int x,int y){return (x+=y)>=mod?x-mod:x;}
inline void Add(int &x,int y){(x+=y)>=mod&&(x-=mod);}
int main()
{
int n=100000000;
int t=clock();
for(int i=1;i<=n;i++) a[i]=add(i,i);
cout<<clock()-t<<endl;
t=clock();
for(int i=1;i<=n;i++) A[i]=add(i,i);
cout<<clock()-t<<endl;
t=clock();
for(int i=1;i<=n;i++) Add(a[i],n-i+1);
cout<<clock()-t<<endl;
t=clock();
for(int i=1;i<=n;i++) Add(A[i],n-i+1);
cout<<clock()-t<<endl;
}