ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

没事瞎测测

2021-07-23 16:01:15  阅读:204  来源: 互联网

标签:GCC 10000 测测 没事 int solve pragma void


(数据结构)没事瞎测测

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有