关于 __builtin_clz
  • 板块灌水区
  • 楼主蒟酱厂妹
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/4/23 23:28
  • 上次更新2023/10/28 03:00:44
查看原帖
关于 __builtin_clz
310818
蒟酱厂妹楼主2022/4/23 23:28

众所周知在很多倍增或者什么的题目会用到 log2n\log_2n 的运算,然后有些人会把 1~n 所有的 log2\log_2 预处理一遍实现 O(1)\mathcal O(1) 查询,然后我用的是 std::__lg,是用 __builtin_clz 实现的,但是我用这个网站翻译成汇编发现是 __builtin_clz 用 bsr 实现的,这不是相当于暴力扫一遍?? 但是实践一下:
预处理1 log2\log_2498ms
预处理2 log2\log_2494ms
每次直接计算 std::__lg:448ms
如此大的差异显然不是评测机波动,那么为什么 __builtin_clz 这么快,甚至比数组寻址还要快呢? 还是说汇编使用了神奇的方式飞速 bsr?

2022/4/23 23:28
加载中...