一个恐怖的评测机事实
最近省选使用老爷机的事情传的沸沸扬扬,我也来蹭个热度。(
本文内容仅供参考,配合 cz 的博客食用更佳。
UPD2:
省选评测机升级为:Intel® Core™ i5-11500 Processor @ 4.60GHz
UPD:
环境 | T1 | T2 | T3 | T4 | T5 | T6-1 | T6-2 | T6-3 | T7-1 | T7-2 | T8 | T9-1 | T9-2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
省选评测机 | 294 | 309 | 1104 | 770 | 388 | 453 | 455 | 40 | 529 | 832 | 3383 | 674 | 343 |
Codeforces | 140 | 343 | 1186 | 936 | 1187 | 593 | 655 | 109 | 405 | 1031 | 843 | 499 | 812 |
UOJ | 315 | 365 | 1265 | 680 | 554 | 542 | 563 | 51 | 378 | 1135 | 870 | 692 | 477 |
LOJ | 243 | 290 | 876 | 472 | 427 | 470 | 388 | 55 | 824 | 839 | 29 | 522 | 274 |
洛谷 | 289 | 365 | 1080 | 782 | MLE | 504 | 504 | 81 | 330 | 992 | 773 | 616 | 423 |
Hydro | 193 | 498 | 727 | 529 | 864 | 520 | 444 | 184 | 415 | 991 | 745 | 346 | 379 |
QOJ | 144 | 267 | 764 | 831 | 406 | 427 | 384 | 26 | 359 | 605 | 681 | 217 | 216 |
Becoder | 183 | 268 | 459 | 377 | 298 | 346 | 364 | 53 | 216 | 373 | 434 | 309 | 200 |
备注:T4 测试结果方差极大,结果取平均值。
以及 Fe1 机房电脑(i3-10100
)的测试结果。
# | T1 | T2 | T3 | T4 | T5 | T6-1 | T6-2 | T6-3 | T7-1 | T7-2 | T8 | T9-1 | T9-2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
本地 | 125 | 418 | 1057 | 828 | 870 | 758 | 650 | 70 | 298 | 902 | 691 | 319 | 332 |
以下为原文。
这里有一段代码,内容是乘法以及取模很多次,虽然没有什么实际意义但可以用来测试评测机的性能。
#include<iostream>
int main()
{
int x,y;
std::cin>>x>>y;
std::cout<<x+y<<std::endl;
long long a=1;
for(int i=1;i<=100000000;i++)
a=a*i%(i+1);
std::cerr<<a<<std::endl;
}
一些著名 OJ 运行以上代码的时间如下:
洛谷:1160ms
Hydro:1165ms
MXOJ:1687ms
UOJ:1374ms
QOJ:633ms
LOJ:599ms
Codeforces:1296ms/2404ms
Atcoder:634ms
Becoder:389ms
其中 Codeforces 前者是在 polygon 上测的,后者为某个题的样例,不清楚为什么差距这么大。可能测的有问题,或者谁可以教教我正确的打开姿势。(
某不知名校内 OJ:660ms/1330ms
令人惊讶的是,该 OJ 的评测方式为从两台评测机中随机抽取一台评测!
为了公平,继续测试另一段代码。
#include<iostream>
#include<vector>
#include<algorithm>
int main()
{
int x,y;
std::cin>>x>>y;
std::cout<<x+y<<std::endl;
std::vector<int> a(10000000);
for(int i=0;i<a.size();i++)
a[i]=(i+114514)%a.size();
std::sort(a.begin(),a.end());
int res=0;
for(int i=0;i<a.size();i++)
res^=a[i];
std::cerr<<res<<std::endl;
}
洛谷:802ms
Hydro:714ms
MXOJ:1103ms
UOJ:878ms
QOJ:734ms
LOJ:522ms
Codeforces:1078ms/2312ms
Atcoder:715ms
Becoder:466ms
可以看得出来,下面这段代码比上面那段的差距要小很多,且相比于上面那段明显更吃内存。
鉴于本次联合省选的机子可能比较慢,因此建议大家写比较吃 cpu 计算的代码的时候更加小心因为评测机性能导致的卡常。
最后祝大家省选 rp++!