性能优化之避免在循环里面操作IO
来源:互联网 发布:java内存泄露代码 编辑:程序博客网 时间:2024/05/17 04:51
一、介绍
之所以写这篇博客,是因为在开发中,在一次项目的代码code review中,发现一段代码的执行效率很低,后面才发现,是因为在循环里面我们操作了数据库 IO方面,所以效率低下。请看下面的代码优化步骤。
二、问题的阐述
假设我们有100个contact数据,现在我们需要根据这些contact数据去获取相应的client数据。在contact对象中,有一个clientId属性,然后我们可以根据clientId属性的值去获取相应的client数据。相应的伪代码如下:
public List<Contact> fetchContactClient(List<Contact> contactList){for(Contact contact : contactList){Client client = contactDao.getClientById(contact.getClient().getId());contact.setClient(client);}return contactList;}那么这样的话,在循环里面,我们有了数据库的IO操作,这样的话效率肯定就慢了,相当于我们做了contactList的集合大小的数据库访问操作。
三、代码优化
如果我们将contactList的集合大小的数据库访问操作变成一个数据库的操作,那么速度就上来了。伪代码如下:public List<Contact> fetchContactClient(List<Contact> contactList){Integer[] ids = new Integer[contactList.size()];for(int i = 0 ;i < contactList.size(); i++){ids[i] = contactList.get(i).getClient().getId();}List<Client> clientList = contactDao.getClientByIds(ids);//do something,做client和contact的匹配代码return contactList;}经过我们优化之后,将访问数据库的操作变成了一次,这样就大大加快了代码的执行效率。
0 0
- 性能优化之避免在循环里面操作IO
- JavaScript性能优化之循环操作
- 系统性能优化之如何查找循环操作数据库
- java性能优化之二 循环里面不使用hibernate创建对象
- TCP性能优化之避免大量握手
- TCP之性能优化避免慢启动
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之如何避免Overdraw
- Android性能优化之避免过度渲染
- Android性能优化之避免过度渲染
- Android性能优化之如何避免Overdraw
- 【BLE】CC2541安卓手机搜索不到设备服务的UUID
- SELinux策略语言--客体类别和许可
- Git 入门
- 前端练习5-css制作漂亮表格
- Linux命令之"more"
- 性能优化之避免在循环里面操作IO
- springMVC初步入门(一)
- 迪杰斯特拉dijkstar(算法个人观点)
- m个苹果放入n个盘子
- 删除算法
- LightOJ1026-Critical Links-tarjan
- android studio 运行程序报:Session 'app': Error Installing APK,解决方案
- 将数据库中查出的列表以指定的 id 作为数组的键名
- 一个非常简单的抽奖游戏