容器、数组效率差距到底有多大,如果换为本地方法呢?
1.遍历容器和数组的时候,效率差距会很大吗?如果考虑容器是线程安全的,差距大多少?
2.本地方法会提升遍历的性能吗?
------解决方案--------------------不大。。
按照你的理解,容器中其实也是一个数组。
------解决方案--------------------1. 不大,容器本身就是数组,只是加上了一些控制访问或者其他的限制;在并发的条件下,收到并发数量和元素个数的影响,不同的数据结构在不同的场景下差异很大,这个数据可以参考<java并发编程实践>,书里有详尽的测试数据
2.理论上应该是可以的,不过遍历很少会成为系统的瓶颈,所以很少会考虑在这个角度上对系统做优化
------解决方案--------------------一般容器是否占用更多的内存?能用数组就尽量用数组的思维是好是坏?
------解决方案--------------------差距不大,说到底容器也就是数组。
------解决方案--------------------
在实践中,往往80%的性能瓶颈是由20%的代码产生的,所以一般情况下不会去考虑“能用数组就尽量用数组”,这等同于自己去实现容器已经实现了的功能=重复造轮子。
你一定要纠结“容器是否占用更多的内存”,答案:是,因为容器用的是固定大小的数组,在使用过程中会经常性的需要扩容(数组的拷贝),所以占空间要大,更详细的可以去参考源码。
深究是好事,不过建议在实践中,不要把80%的时间,花在20%的性能瓶颈上。
------解决方案--------------------
1. 不大,容器本身就是数组,只是加上了一些控制访问或者其他的限制;在并发的条件下,收到并发数量和元素个数的影响,不同的数据结构在不同的场景下差异很大,这个数据可以参考<java并发编程实践>,书里有详尽的测试数据
2.理论上应该是可以的,不过遍历很少会成为系统的瓶颈,所以很少会考虑在这个角度上对系统做优化
java并发编程实践
类似的并发编程的书籍,多线程类的书籍,经典的能否推荐基本呢?
或者网上比较著名的源码也行。谢谢了
《java并发编程实践》个人感觉这本书很全面了,没读过其他的相关书籍,这本书一直放在手边做参考。
源码的话,可以去读读Netty的源码,里面关于并发的消息接收分发的模型设计思想,可以借鉴
------解决方案--------------------遍历的效率肯定可以约等
------解决方案--------------------
遍历的效率肯定可以约等
如果线程安全的容器进行遍历,效率会有差别吗?
如果是Iterator方法,会有效率差,但是也可以忽略
------解决方案--------------------不需要去考虑这些东西的性能,这些东西性能,特别是数组都是经过极度优化的,性能是极快的!
------解决方案--------------------
遍历的效率肯定可以约等
如果线程安全的容器进行遍历,效率会有差别吗?
如果是Iterator方法,会有效率差,但是也可以忽略
我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。
100W条数据 数组用下标遍历0秒 ArrayList用iterator遍历31秒
------解决方案--------------------
遍历的效率肯定可以约等
如果线程安全的容器进行遍历,效率会有差别吗?
如果是Iterator方法,会有效率差,但是也可以忽略
我想知道这种效率差的量级有多大,PS自己手头没有条件写代码测试。
100W条数据 数组用下标遍历0秒 ArrayList用iterator遍历31秒
我想问的是 100 万条数据,从头到底遍历一遍的意义是什么?
相干j2ee的困惑