每天听简报,了解最新科技、AI、软件资讯
有位计算机科学教授发现,Python里号称常数时间的dict和set,其实能被逼成平方级的慢。他往一个集合里插入一组精心构造的数字,数量从一千翻到一万六,耗时从不到五毫秒涨到超过一秒,每次数量翻倍,耗时涨四倍,这就是平方级增长。原因是哈希碰撞,加上数据大了以后从缓存掉进内存,查找自然变慢。他又拿一百万个字符串做查表,dict单次查找耗时从二十几纳秒涨到两百纳秒,涨了九倍,因为字符串对象太占空间,缓存装不下。评论区吵得挺凶,有人说这平方级是刻意挑输入凑出来的,本质就是把n次线性操作硬凹成一个大操作。也有人说O(1)从来指的是平均期望表现,不是任何输入都保证的硬承诺。
进度保存在本设备 · 登录同步