自建动态数组跟Arraylist比较
来源:3-2 栈的基本实现
raydio
2020-06-02
请问自己写的动态数组跟系统自带的Arraylist相比使用起来效率如何,哪个比较好呢?
谢谢
写回答
1回答
-
liuyubobobo
2020-06-03
简单来说,在生产环境中,我们应该优先使用标准库中提供的类或者方法。
这背后的考量不一定是性能,而是“安全性”。标准库中提供的类或者方法,经过了长时间众多开发者的使用,反馈,迭代,问题考虑的更全面,产生 bug 的几率更低。
但具体到性能,不一定标准库的就更快,最典型的,在 C++ 语言中,STL 的类通常都比自己实现的要慢一些。
这背后有很多原因。一方面,因为标准库中代码可能会考虑更多问题,更多边界条件,导致变慢;也有可能没有考虑某些问题,导致变快。比如是否考虑线程安全?比如是否要缩容(Java 标准库中的动态数组只扩容,不缩容),比如某些常数怎么取(比如哈希表中的填充率)?比如是否使用泛型?等等等等。再加上对于一些语言来说,语言内部可能可以做底层优化(Python最明显)。等等等等,这些因素都会影响性能,很难一概而论。
原则上,生产环境,应该优先使用标准库。如果标准库的性能不能达到要求,需要仔细分析原因,看自己的实现能否解决性能瓶颈?还是其实从算法思路上要调整?
继续加油!:)
312020-06-03
相似问题