11 | 如何针对特定业务场景设计数据结构和高性能算法?
尉刚强
你好,我是尉刚强。今天这节课,我们来聊聊数据结构与算法。
可能在看到这节课的标题后,你会觉得有点儿奇怪:好像在平时的编码过程中,已经不太需要单独去关注数据结构和算法了,为什么还需要再根据场景设计数据结构和算法呢?
有这样的想法也无可厚非,因为我们确实会发现,在实际的业务领域内,需要我们开发人员直接设计数据结构与算法的机会越来越少。比如说:
在互联网服务场景中,性能开销主要集中在数据库 CRUD 操作上,所以很少会关注业务内数据结构与算法设计的性能;
随着更多的核心业务算法内置到了芯片当中,对于从事嵌入式研发的工程师来说,主要工作就聚焦在了管理配置各种硬件资源上,因而并不会经常设计和使用数据结构与算法;
很多语言与标准库中已经内置了丰富的数据结构与算法,并不太需要开发人员手动去设计和开发;
……
但事实上,我们以往所采用的性能优化手段(如热点代码分析优化、编译器优化等),对于系统性能的提升其实是按照百分制计算的,这是一种线性粒度的性能提升。我举个简单的例子,如果你在代码 Profiling 分析后,识别出了一个频繁调用的热点函数,将它内联或者优化后性能提升能够达到 3%~5%,就已经属于非常明显的优化提升了。
而通过数据结构与算法的设计来改进的系统性能,其获得的性能收益很有可能是非线性的,甚至可能是指数级的。就拿典型的查找问题来说,使用链表的遍历查找算法和数组向量的二分查找算法,在查找速度上性能可能会相差好多倍呢!
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
在业务场景下选择合适的数据结构和算法对系统性能至关重要。本文强调了挖掘领域数据特性对优化数据结构与算法性能的重要性,以及根据业务逻辑定制化设计算法的必要性。作者提到了综合各种操作选择数据结构与算法的重要性,并举例说明了不同数据结构在不同业务场景下的适用性。此外,文章还强调了降低算法精确度以提升系统性能的重要性,并给出了实际案例进行说明。总的来说,本文通过深入分析业务场景下的数据结构与算法选择,强调了根据领域数据特征选择对应算法的重要性,以及权衡综合各种操作选择数据结构与算法的必要性。文章内容丰富,对于需要在业务场景下优化系统性能的读者具有一定的参考价值。文章的观点在于,相较于熟悉所有的数据结构与算法,更重要的是如何理解业务,从业务出发,主动选择与优化数据结构和算法。文章提出了思考题,引发读者对不同数据结构和算法在并发模式下的性能和串行模型的性能差异进行思考。整体而言,本文对于读者快速了解业务场景下数据结构与算法选择的重要性以及如何从业务出发进行选择与优化提供了有益的技术观点。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能优化高手课》,新⼈⾸单¥59
《性能优化高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论