反射对效率的影响2006-7-20 2:03:45
在做产品的时候,有时候需求改来改去。 在OpenSource中的OR-Mapping工具中Hibernate/Spring认为是非常优秀的FrameWork啦,但是其效率问题一直是个瓶颈。 我们针对自己的产品特点,自己定下了几个简单的规则,来做这种简单的映射关系: 1 数据表必须是简单的数据格式; 2 数据库表与Java对象之间以及表字段与Bean的方法有一一对应关系; 3 在插入数据的时候Bean的主键必须是系统的默认值,比如数值型为0。 结合以上规则,我们来实现一个简单的持久化工具SHDAO.java 提供如下简单方法: void save(Object obj) throws Exception; void delete(Object obj) throws Exception; Object find(Guid guid) throws Exception; List query(...); 这样单表的几个简单操作就可以完全由SHDAO来实现。需要修改表的时候,按照规则修改表结构。 以下是测试结果: 测试环境:JDK1.5/MySql 4.1 /Linux 每次插入1000条数据,3次的平均数据: JDBC : 62781毫秒 SHDAO:65187毫秒 性能损失:3.82% 读取数据3次平均记录(总数据35944条记录): JDBC:594毫秒 SHDAO:859 性能损失:44.61% 如果读取10条或以下数据: JDBC基本上在0毫秒左右(具体时间已经非常小了) SHDAO消耗时间在10毫秒左右。 其实反射对于性能还是有一定影响的。 就看它是不是你的系统的瓶颈了。 |
|
|