其他分享
首页 > 其他分享> > 没事瞎测测

没事瞎测测

作者:互联网

(数据结构)没事瞎测测

因为只是留个影响的瞎测,没有多次测试取平均,没有各种数学的合理估计方法,亦没有对电脑性能和编译器和对环境巴拉巴拉的严格限制。
重申:只是瞎测
没有声明都是不开O2优化和inline

int solve(){
    for(int i = 1;i<10000;i++){
        for(int j = 1;j<10000;j++)
            in[i][j] = i * j + 233;
    }
    cout<<"HELLO WORLD";
}

Run Time: 0.29s
 
//遍历顺序相反
int solve(){
    for(int j = 1;j<10000;j++){
        for(int i = 1;i<10000;i++)
            in[i][j] = i * j + 233;
    }
    cout<<"HELLO WORLD";
}
Run Time: 0.682s
//在一个声明了int但是没有返回值同时主函数也没有调用其返回值
//正常的时候是能跑的
//开启氧气优化之后
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
int in[10000][10000];
int solve(){
    for(int j = 1;j<10000;j++){
        for(int i = 1;i<10000;i++)
            in[i][j] = i * j + 233;
    }
    cout<<"HELLO WORLD";
}
//他炸了
Process finished with exit code -1073741819 (0xC0000005)
//但是。。。又跑了一遍他又好了。。。
Run Time: 0.125s
//看来炸不炸看心情,但是代码必须写准确了
int in[10000][10000];
void solve(){
    for(int j = 1;j<10000;j++){
        for(int i = 1;i<10000;i++)
            in[i][j] = i * j + 233;
    }
    cout<<"HELLO WORLD";
}
反序
Run Time: 0.72s
开启氧气优化之后
Run Time: 0.125s
int solve(){
    for(int i = 1;i<10000;i++){
        for(int j = 1;j<10000;j++)
            in[i][j] = i * j + 233;
    }
    cout<<"HELLO WORLD";
}
正序
Run Time: 0.298s
吸氧
Run Time: 0.115s
//明显在代码问题比较大的时候优化幅度更加大
//读入一百万个数字
int读入
void solve(){
    int t;
    for(int i = 1;i<=1000000;i++)
        scanf("%d",&t);
    cout<<"HELLO WORLD"<<endl;
}

Run Time: 0.584s

cin读入
void solve(){
    int t;
    for(int i = 1;i<=1000000;i++)
        cin>>t;
    cout<<"HELLO WORLD"<<endl;
}
//不应该啊。。。这是为什么?
Run Time: 0.369s

ll读入
void solve(){
    int t;
    for(int i = 1;i<=1000000;i++)
        scanf("%lld",&t);
    cout<<"HELLO WORLD"<<endl;
}
Run Time: 2.659s
五倍常数,没事别开ll

快读
inline ll read(){
    ll res=0;
    bool zf=0;
    char c;
    while(((c=getchar())<'0'||c>'9')&&c!='-');
    if(c=='-')zf=1;
    else res=c-'0';
    while((c=getchar())>='0'&&c<='9')res=(res<<3)+(res<<1)+c-'0';
    if(zf)return -res;
    return res;
}

Run Time: 0.22s
同样是读ll花了scanf的1/10的时间
在vector后面插入数字

十万
void solve(){
    vector<int> test;
    for(int i = 1;i<=100000;i++)
        test.push_back(233);
    cout<<"HELLO WORLD"<<endl;
}
Run Time: 0.001s
Run Time: 0.001s
Run Time: 0.002s

一百万
void solve(){
    vector<int> test;
    for(int i = 1;i<=1000000;i++)
        test.push_back(233);
    cout<<"HELLO WORLD"<<endl;
}
Run Time: 0.026s
Run Time: 0.016s
Test 1 Run Time: 0.013s
一千万
Test 1 Run Time: 0.15s
Test 1 Run Time: 0.17s
Test 1 Run Time: 0.159s
一亿
Run Time: 1.474s
Run Time: 1.445s
Run Time: 1.448s
十亿
Run Time: 14.367s

突然出大问题!先咕了,随时间补全。
???????????????????????????????????????????

标签:GCC,10000,测测,没事,int,solve,pragma,void
来源: https://blog.csdn.net/weixin_45874139/article/details/119025241