选择数据结构和算法的六条经验

100 阅读1分钟

在实际开发中,如何权衡选择使用哪种数据结构和算法?

  1. 时间空间复杂度不能跟性能划等号

  2. 抛开数据规模谈数据结构和算法都是"耍流氓"

  3. 要结合数据特征和访问方式选择数据结构

  4. 区别对待IO密集、内存密集和计算密集

    1. 磁盘,数据库:磁盘IO
    2. CPU密集型:代码执行效率瓶颈主要在CPU执行效率,我们从内存读取一次数据,到CPU缓存或者寄存器之后会进行多次频繁CPU计算,CPU计算耗时占大部分,要尽量减少逻辑计算复杂度,比如用位运算代替加减乘除运算,加减乘除在CPU会用位运算计算(加法器)
    3. 内存密集型:代码执行效率瓶颈在内存数据的存取,对于内存密集性代码,计算操作比较简单,比如字符串比较操纵,每次从内存读取数据之后,只需要进行一次简单比较操作,所以内存数据读取速度是字符串比较操作瓶颈,在选择数据结构和算法时候需要考虑能够能否减少数据读取量,数据是否在内存连续存储,是否能利用CPU缓存预读
  5. 善用语言提供的类,避免重复造轮子

  6. 不要漫无目的的过度优化