自建动态数组跟Arraylist比较

来源:3-2 栈的基本实现

raydio

2020-06-02

请问自己写的动态数组跟系统自带的Arraylist相比使用起来效率如何,哪个比较好呢?
谢谢

写回答

1回答

liuyubobobo

2020-06-03

简单来说,在生产环境中,我们应该优先使用标准库中提供的类或者方法。


这背后的考量不一定是性能,而是“安全性”。标准库中提供的类或者方法,经过了长时间众多开发者的使用,反馈,迭代,问题考虑的更全面,产生 bug 的几率更低。


但具体到性能,不一定标准库的就更快,最典型的,在 C++ 语言中,STL 的类通常都比自己实现的要慢一些。


这背后有很多原因。一方面,因为标准库中代码可能会考虑更多问题,更多边界条件,导致变慢;也有可能没有考虑某些问题,导致变快。比如是否考虑线程安全?比如是否要缩容(Java 标准库中的动态数组只扩容,不缩容),比如某些常数怎么取(比如哈希表中的填充率)?比如是否使用泛型?等等等等。再加上对于一些语言来说,语言内部可能可以做底层优化(Python最明显)。等等等等,这些因素都会影响性能,很难一概而论。


原则上,生产环境,应该优先使用标准库。如果标准库的性能不能达到要求,需要仔细分析原因,看自己的实现能否解决性能瓶颈?还是其实从算法思路上要调整?


继续加油!:)

3
1
raydio
谢谢解答
2020-06-03
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程