求助,关于O2优化对STL的效果
  • 板块学术版
  • 楼主一只大龙猫
  • 当前回复14
  • 已保存回复14
  • 发布时间2021/8/18 14:30
  • 上次更新2023/11/4 10:12:50
查看原帖
求助,关于O2优化对STL的效果
511907
一只大龙猫楼主2021/8/18 14:30

RT,闲着没事 (其实是摸鱼),到 P1177 测试了一下各大排序函数/容器的速度,结果如下:

函数/容器耗时(毫秒)占用内存按耗时排名
sort15215210201020 KB22
priority_queue3923921.241.24 MB55
multiset3753755.235.23 MB44
qsort1351351.261.26 MB11
网上抄的归并排序1601601.541.54 MB33

令人意外的是,没有任何优化的快排函数qsort是最快的。

然而,我实在是无聊 (摸鱼停不下来),就开了 O2 优化:

函数/容器耗时(毫秒)占用内存按耗时排名
sort12012010081008 KB11
priority_queue1341341.241.24 MB44
multiset1951955.255.25 MB55
qsort1261261.301.30 MB22
网上抄的归并排序1301301.561.56 MB33

这时, STL 的函数/容器速度得到了极大的提升。如priority_queue,在没有进行 O2 优化之前,用时为 392392 毫秒;但在进行了 O2 优化之后,用时仅为 134134 毫秒,提高了一倍不止!

现在这个蒟蒻有个问题,bdfs 无果,望各位巨佬解答:

  1. 为什么 O2 优化对 STL 的容器/算法的用时优化如此明显?

  2. sortpriority_queue之外,其他函数/容器的占用空间都有提高,除去评测机波动,是否可能与开启 O2 优化有关?如果有可能,原因是?

2021/8/18 14:30
加载中...