• 学术版
  • 本OJ是否应当添加O3优化选项?

  • @ 2023-8-4 21:09:38

(不要给我置顶!你见过除了某谷以外置顶一堆讨论的OJ吗?)

O3优化,激进的优化,往死里优化,人称O2 pro max plus uitral ti。

但是会显著增加资源占用,并且部分程序可能会厌氧。

5 条评论

  • @ 2023-8-5 18:11:49

    不太好吧,会导致暴力代码用 O(114514)O(114514) 超臭优化时可以过一些大数据题。刚刚我试了试暴力过了 n1000000n \le 1000000 的前缀和。优化的有点恐怖。

    • @ 2023-8-5 18:12:23

      @

    • @ 2023-8-6 10:26:53

      哈哈哈,GCC被臭晕了,直接不运行了

    • @ 2023-8-6 18:30:35

      @ 本来TLE的代码跑的飞快

  • @ 2023-8-5 10:52:37

    Onone:>2086.618ms

    O2:2.526ms

    O3:1.967ms

    Ofast:2.23ms

    O114514:1.672ms

    自己看看结果就知道比赛选哪一个了

    • @ 2023-8-5 10:48:59

      同时我们也开启了 对于正确率有争议(也就是100pts->40pts 60pts->20pts或者CE) 的Ofast优化

      • @ 2023-8-4 21:53:18

        对比测试:

        #include <iostream>
        #include <vector>
        using namespace std;
        signed main(){
            int n;
            for (int i = 0;i<=2e9;i++){
                n++;
            }
        }
        //T2
        

        不开优化:>2073.734ms

        O2:1.796ms

        O3:1.759ms

        DIJ跑图测试:

        #include <iostream>
        #include <vector>
        #include <cstring>
        using namespace std;
        const int maxn = 11451;
        int g[maxn][maxn];
        int d[maxn];
        bool p[maxn];
        int main(){
            int n,m,e;
            cin >> n >> m >> e;
            //存图
            for (int i = 1;i<=m;i++){
                int u,v,w;
                cin >> u >> v >> w;
                g[u][v]=w;
            }
            memset(d,0x7f,sizeof(d));
            d[1]=0;
            for (int i = 1;i<=n;i++){
                int mark = 0,minn=2e9;
                for (int j = 1;j<=n;j++){
                    if (p[j]) continue;
                    if (d[j]<minn){
                        minn=d[j];
                        mark=j;
                    }
                }
                p[mark]=true;
                for (int j = 1;j<=n;j++){
                    if (p[j]) continue;
                    if (g[mark][j]){
                        d[j]=min(d[j],d[mark]+g[mark][j]);
                    }
                }
            }
            cout << d[e];
            return 0;
        }
        

        使用Cyaron数据生成器。

        数据n,m为11451和19198(主要是再大一个量级编译器崩了...羡慕python)

        不开优化:>1062.166999ms

        O2:271.66ms

        O3:266.718ms

        快了一点

        • @ 2023-8-4 21:12:04

          O3和O114514已经添加了,在语言栏最底部

          • @ 2023-8-4 21:12:26

            并且墓前来看一切正常,没有报错问题

        • 1