数字化实习中的贡献:
- 一个容器用vector存储数据,进行数据查询利用std::find()遍历查找在项目中耗时700~800ms,将容器修改为unordered_map,利用hash_map的find(),执行O(1)的查询,耗时10ms一下。
- unordered_map 当插入元素过多时,发生了哈希碰撞,碰撞开链到一定的阈值,触发了增加 b u c k e t bucket bucket ,进而触发了 r e h a s h rehash rehash,使用 reverse 来预留元素个数,避免rehash从而进行优化,从380ms降低至270ms
- 避免多次执行拷贝,定义局部vector的多次使用,多执行了构造和析构,拷贝的过程十分的浪费时间,可以将局部vector改为全局或者静态的,从而减少构造和析构,拷贝的过程,从560ms降低至320ms。
- 迭代器的自加,
++it
和it++
的区别,前++返回引用,后++返回一个临时对象,需要创建一个临时变量,多了创建和销毁过程。 - 不良代码写法,不要将单词写法写为:
do..while
,在编译成汇编代码会多一些指令,从2700ms降至300ms。