- 学术版
本OJ是否应当添加O3优化选项?
- 2023-8-4 21:09:38 @
(不要给我置顶!你见过除了某谷以外置顶一堆讨论的OJ吗?)
O3优化,激进的优化,往死里优化,人称O2 pro max plus uitral ti。
但是会显著增加资源占用,并且部分程序可能会厌氧。
5 条评论
-
xudongyi1 LV 7 MOD @ 2023-8-5 18:11:49
不太好吧,会导致暴力代码用 超臭优化时可以过一些大数据题。刚刚我试了试暴力过了 的前缀和。优化的有点恐怖。
-
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已经添加了,在语言栏最底部
- 1