楼主:
ericerix (Ponwar)
2020-12-06 11:14:05选手1号:
https://pastebin.com/TL2Ys690
选手2号:
https://pastebin.com/B6i600fX
这是integer转罗马的题目,
令我比较意外的是,
选手1号有去判断temp是否为0,是的话直接换下一个不囉唆
而选手2号没有去判断,而是即使是0也照着做,感觉会多运算一些,例如下面mod
而实测结果居然是选手2号比较快?
所以可以理解成,判断是否为0比mod还要慢囉?
那这样到底要什么时候去下if else来使程式变快而不是变慢?
作者:
LP9527 (ㄊㄇ抽菸都去)
2020-12-06 13:46:00大部分计算比判断快
作者:
art1 (人,原来不是人)
2020-12-06 14:07:00因为 CPU 的分支预测猜错了就会慢很多,所以一些最佳化方法会用特殊技巧让判断变成计算
借串问 dict和array存取速度是否也有差别?
作者:
pmove (金疾柠檬)
2020-12-06 17:45:00dict 是hash 很快喔
作者:
OrzOGC (洞八达人.拖哨天王)
2020-12-06 18:24:00dict存取感觉都慢array很多
作者:
pmove (金疾柠檬)
2020-12-06 19:57:00Array在Python叫list, 跟dict比速度,详细要看您怎么用?如果您要存取的list元素要线性搜寻,这时改用dict 会快很多
作者:
miwuz (ibike)
2020-12-06 20:40:00推楼上~
作者:
germun (ger)
2020-12-06 22:49:00不保证谁快 不过有些方法的优势要在资料量大才显现的出来
作者:
DLHZ ( )
2020-12-07 01:25:00详情请见算盘本 简单来说因为处理器中pipeline设计的缘故会有些难以处理的情况 而if系列的指令就是其中一种(control hazard) 虽然有更进一步改进解决的方法 但一般来说能避免判断式的写法还是会比较快 有错还请指正