社区讨论

求助,关于O2优化对STL的效果

学术版参与者 9已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@lobyb3ol
此快照首次捕获于
2023/10/30 04:56
2 年前
此快照最后确认于
2023/11/04 10:12
2 年前
查看原帖
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 优化有关?如果有可能,原因是?

回复

14 条回复,欢迎继续交流。

正在加载回复...