高性能的数据查找方式
来源:互联网 发布:mac如何收藏网页 编辑:程序博客网 时间:2024/05/17 03:42
错误案例
当我们需要从一些会员中查找指定的会员,并且根据这个会员的属性做些操作。或者类似的数据筛选情况下。例如:
List<Person> results = searchResultList();//此时查询出的结果是1000,并且每个对象比较大String [] names = {"gary","lily","frank","red"}for(int j=0;j< names.length;j++){ String name= names [j]; for(int i=0;i< results.size(); i++){ Person person = results.get(i); if(StringUtil.equals(person.name, name)){ //do somthing } }}
错误分析
查询条件的不确定性导致查询的结果可能很大,数量很多,如果再用嵌套式的循环,很可能产生性能的浪费,甚至导致内存的泄漏。
正确用法
//此时查询出的结果是1000,并且每个对象比较大List<Person> results = searchResultList();HashMap hp = HashMap();for(int i = 0; i < results.size(); i++){ Person person = results.get(i); hp.put(person.name, person);}String [] names = {"gary", "lily", "frank", "red"}for(int i=0; i< names.length; i++){ String name = names [i]; if(hp.containsKey(name)){ //do somthing }} 最差效率Results集合Names集合找到目标对象的循环次数双循环 N*N 1000 500 500000HASH算法方式 1*N 1000 500 500通过以上表格的数据分析可知:采用HASH算法方式来替代循环查找的方式很大程度上将带来效率提升。
测试关注点
用边界法进行测试,并且用JPROFILE对不确定的情况,观察内存的占用情况。
- 高性能的数据查找方式
- 采用libuv的epoll方式实现的异步高性能libcurl发送数据的方法
- libcurl采用curl_multi_perform() + curl_multi_wait()方式实现异步高性能l发送数据的方法
- DataSet高性能数据传输方式的实现
- java实现高性能的数据同步
- java实现高性能的数据同步
- java实现高性能的数据同步
- php的高性能精准IP查找类
- 数据查找方式
- C#高性能TCP服务的多种实现方式
- 高性能平台上提交任务的两种方式
- C++封装的高性能异步日志,cout实现方式
- C#高性能TCP服务的多种实现方式
- Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)
- 海量数据高性能分页
- hbase高性能读取数据
- hbase高性能读取数据
- 最佳论文:构建高性能的重复数据删除系统
- List对象的空指针问题
- 为了定位DLL,Windows搜索目录的顺序
- Android开发收集<一>
- Wander
- 转载 我在北京工作这几年 – 一个软件工程师的反省
- 高性能的数据查找方式
- IIS7.0下防盗链设置,aspnet防盗链源码
- pthread库学习-2:基本函数
- Android屏幕密度(Density)和分辨率的关系
- 1066 求最长公共子序列的长度
- MFC中整型与字符串转换
- 1067 最小公倍数
- windows 7对未来有信心
- K3 ERP 出入库单据日期的控制