作者ericerix (我的帅,在於脸)
看板Python
标题[闲聊] 用if else规避一些条件反而更慢?
时间Sun Dec 6 11:14:05 2020
选手1号:
https://pastebin.com/TL2Ys690
选手2号:
https://pastebin.com/B6i600fX
这是integer转罗马的题目,
令我比较意外的是,
选手1号有去判断temp是否为0,是的话直接换下一个不罗唆
而选手2号没有去判断,而是即使是0也照着做,感觉会多运算一些,例如下面mod
而实测结果居然是选手2号比较快?
所以可以理解成,判断是否为0比mod还要慢罗?
那这样到底要什麽时候去下if else来使程式变快而不是变慢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.13.175 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1607224450.A.D52.html
※ 编辑: ericerix (101.10.13.175 台湾), 12/06/2020 11:14:42
1F:→ LP9527: 大部分计算比判断快 12/06 13:46
2F:推 art1: 因为 CPU 的分支预测猜错了就会慢很多,所以一些最佳化方法 12/06 14:07
3F:→ art1: 会用特殊技巧让判断变成计算 12/06 14:08
4F:→ shane87123: 借串问 dict和array存取速度是否也有差别? 12/06 15:38
5F:推 pmove: dict 是hash 很快喔 12/06 17:45
6F:→ OrzOGC: dict存取感觉都慢array很多 12/06 18:24
7F:推 pmove: Array在Python叫list, 跟dict比速度,详细要看您怎麽用?如 12/06 19:57
8F:→ pmove: 果您要存取的list元素要线性搜寻,这时改用dict 会快很多 12/06 19:57
9F:推 miwuz: 推楼上~ 12/06 20:40
10F:推 germun: 不保证谁快 不过有些方法的优势要在资料量大才显现的出来 12/06 22:49
11F:→ DLHZ: 详情请见算盘本 简单来说因为处理器中pipeline设计的缘故会 12/07 01:25
12F:→ DLHZ: 有些难以处理的情况 而if系列的指令就是其中一种(control ha 12/07 01:25
13F:→ DLHZ: zard) 虽然有更进一步改进解决的方法 但一般来说能避免判断 12/07 01:25
14F:→ DLHZ: 式的写法还是会比较快 有错还请指正 12/07 01:25
15F:→ leolarrel: 可以google "CPU 管线 分支预测" 12/08 16:48