L
lsj
Unregistered / Unconfirmed
GUEST, unregistred user!
我的几点意见:
1.Iterator是界面,而不是实现。
Iterator只是为我们带来了统一的遍历集合的界面,它本身无法带来性能上的提高。
2.Java2的类集框架(Collection)使用的Iterator与我们使用的Iterator之间的区别.
JDK提供的Iterator为我们提供了基本数据结构(set,map,list等)的统一的遍历界面,
当我们要为我们自己的数据结构提供Iterator时我们有两种选择:用基本的数据结构组
合成我们的数据结构,使用JDK的Iterator进行遍历(一般的做法);为我们自己的数
据结构提供Iterator实现。
3.性能问题.
Iterator是建立在某种数据结构和存取方式基础上的一种遍历算法,性能问题的产生不
在Iterator,而在数据结构和存取方式的选择。以大家现在讨论的应用为例,争论的焦点
在于是一次取出全部数据还是分批取出数据。
ArrayList的做法是一次取出全部数据保存在服务器的内存中,这样的数据结构和存取方式
下的Iterator效率自然高,网络流量也能控制。代价是内存的使用量大。
返回ResultSet的做法,是分批从数据库中取数据,每次只取所需的,这样内存和网络流量
都得到控制,代价就是长期连接数据库,所以需要做一个缓冲以减少和数据库的连接次数。
EJB环境下还会产上大量的小事务。
4.性能问题的解决之道。
针对项目实际。若是硬件够好,内存够多,可用第一种,非但速度快,而且容易实现与调整。
若是内存不够,那只好用程序技巧来达到同样的效果,这也是jive的目的。
我自己的方式则是模仿EJB,返回的是主键,真正数据的读取延迟到具体的实体对象,这样
无论是内存和网络流量都得到控制,也不会长期占用连接,但代价就是频繁的连接数据库,
性能的瓶颈转到连接池上。
当然这是从我的实际出发的,不可能通用。
一点浅见,请大家指点。
1.Iterator是界面,而不是实现。
Iterator只是为我们带来了统一的遍历集合的界面,它本身无法带来性能上的提高。
2.Java2的类集框架(Collection)使用的Iterator与我们使用的Iterator之间的区别.
JDK提供的Iterator为我们提供了基本数据结构(set,map,list等)的统一的遍历界面,
当我们要为我们自己的数据结构提供Iterator时我们有两种选择:用基本的数据结构组
合成我们的数据结构,使用JDK的Iterator进行遍历(一般的做法);为我们自己的数
据结构提供Iterator实现。
3.性能问题.
Iterator是建立在某种数据结构和存取方式基础上的一种遍历算法,性能问题的产生不
在Iterator,而在数据结构和存取方式的选择。以大家现在讨论的应用为例,争论的焦点
在于是一次取出全部数据还是分批取出数据。
ArrayList的做法是一次取出全部数据保存在服务器的内存中,这样的数据结构和存取方式
下的Iterator效率自然高,网络流量也能控制。代价是内存的使用量大。
返回ResultSet的做法,是分批从数据库中取数据,每次只取所需的,这样内存和网络流量
都得到控制,代价就是长期连接数据库,所以需要做一个缓冲以减少和数据库的连接次数。
EJB环境下还会产上大量的小事务。
4.性能问题的解决之道。
针对项目实际。若是硬件够好,内存够多,可用第一种,非但速度快,而且容易实现与调整。
若是内存不够,那只好用程序技巧来达到同样的效果,这也是jive的目的。
我自己的方式则是模仿EJB,返回的是主键,真正数据的读取延迟到具体的实体对象,这样
无论是内存和网络流量都得到控制,也不会长期占用连接,但代价就是频繁的连接数据库,
性能的瓶颈转到连接池上。
当然这是从我的实际出发的,不可能通用。
一点浅见,请大家指点。