hibernate和jdbc加载对象性能
skzr.org 写道
core2 P8400, 4G mem
我的测试100W记录,mysql使用缺省安装,java -server -Xms2048M -Xmx2048M
hibernate
insert 1000000 count, consume 521.133 seconds
jdbc
insert 1000000 count, consume 508.46 seconds
select count(*) from APP_USER; 1000000 rows, 0.31 seconds;
结构APP_USER(ID, NAME, PASSWORD)
写入数据i: insert into APP_USER(NAME, PASSWORD) values(String.valueOf(i), String.valueOf(i));
可见Hibernate性能并不太慢。大约损失性能2.75%还是可以接受,如果对性能苛刻的要求建议还是直接jdbc吧。
- hibernate:
@Test @Transactional(propagation = Propagation.REQUIRES_NEW) public void testHibernate() { logger.info("start test Hibernate..."); long begin = System.currentTimeMillis(); baseDao.saveOrUpdateAll(users); long end = System.currentTimeMillis(); logger.info("insert " + num + " count, consume " + (end - begin) / 1000f + " seconds"); }
- jdbc
@Test @Transactional(propagation = Propagation.REQUIRES_NEW) public void testJdbc() { logger.info("start test jdbc..."); long begin = System.currentTimeMillis(); jdbcTemplate.batchUpdate("insert into APP_USER(NAME, PASSWORD) values (?, ?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int row) throws SQLException { User user = users.get(row); ps.setString(1, user.getName()); ps.setString(2, user.getPassword()); } @Override public int getBatchSize() { return users.size(); } }); long end = System.currentTimeMillis(); logger.info("insert " + num + " count, consume " + (end - begin) / 1000f + " seconds"); }
不过你的hibenate和jdbc的差距也不是很大阿。
看到你测试性能损失8.37%差不多阿,不过你的这个count太慢了点吧。
我一直觉得Hibernate的性能不会很差,我只用他做映射,一般不搞继承、所有关系只用ID而不用对象做对应。
今天测试510W数据从数据库(表实际有3700W记录)加载到内存中:java参数 -server -Xms2048M -Xmx2048M
- jdbc从数据库拿出来变成对象,大约内存占用:1300MB。
- jdbc执行时间:09:47:28,989->09:54:51,456
- time: 7:23s mem: 1819.28-756.68=1062.6MB
- hibernate: 无法正确完成,内存不够,调整内存为 -server -Xms2048M -Xmx4000M依然不行
相关推荐
ASoc 2020-11-14
Andrea0 2020-09-18
Cherishyuu 2020-08-19
dongtiandeyu 2020-08-18
CoderYYN 2020-08-16
大黑牛 2020-08-15
Dullonjiang 2020-08-11
gaozhennan 2020-08-03
mcvsyy 2020-08-02
zbcaicai 2020-07-29
AscaryBird 2020-07-27
liulin0 2020-07-26
ldcwang 2020-07-26
helloxusir 2020-07-25
娜娜 2020-07-20
pengpengflyjhp 2020-07-19
点滴技术生活 2020-07-19
人可 2020-07-18
chenjiazhu 2020-07-08