★★ 读配置文件、读数据库数据哪个效率高?

现在正在做项目代码优化工作。

对于某些固定数据的获得方法主要有如下两种:

(1) 从数据库(oracle)相应table读取;

(2) 从配置文件(properties文件)中读取(将相应数据写到txt文件中准备好,使用时从txt文件中获得)

配置文件:

XXX.properties:

industry+0-I=%:所有行业;A:农、林、牧、渔业;B:采掘业;C:制造业;D:电力、煤气及水的生产和供应业;。。

area+0=%:所有地区;11:北京;12:天津;13:河北;14:山西;15:内蒙古;21:辽宁;22:吉林;23:黑龙江;。。。

level+0=0:所有等级;1:AAA;2:AA+;3:AA;4:AA-;5:A+;6:A;7:A-;8:BBB+;9:BBB;10:BBB-;11:BB+;12:BB;13:BB-;14:B;15:CCC

servlet中测试耗时的数据库读取、配置文件读取代码:

long begin1 = System.currentTimeMillis();
List<GradeVo> grades = gradeBussiness.getALLGrade();
List<IndustryVo> industrys = industryBussiness.getAllIndustrys();
List<AreaVo> areas = areaBussiness.getAllAreas();
request.setAttribute("grades", grades);
request.setAttribute("industrys",industrys);
request.setAttribute("areas", areas);
long end1 = System.currentTimeMillis();
long totalTime1 = end1 - begin1;
System.out.println("取库共用时:"+totalTime1);

long begin2 = System.currentTimeMillis();
request.setAttribute("industrySelectStr", XXXXUtil.makeSelect("industry", "industry", "industry+0-I", "%", ""));
request.setAttribute("areaSelectStr", XXXXUtil.makeSelect("area", "area", "area+0", "%", ""));
request.setAttribute("companyLevelSelectStr", XXXXUtil.makeSelect("companyLevel", "companyLevel", "level+0", "%", "companyLevelChange()"));
long end2 = System.currentTimeMillis();
long totalTime2 = end2 - begin2;
System.out.println("取配置文件共用时:"+totalTime2);

运行结果:

取库共用时:235
取配置文件共用时:0

耗时差别很大!!!

没有关闭tomcat,将再次访问此servlet:

取库共用时:266
取配置文件共用时:0

注意:

以上读取数据库的过程中,每次数据的读取都进行了jdbc连接、数据查询获取、连接关闭(暂时项目没有使用连接池)。

结论:

对于某些值固定的数据,“读取预先写入到配置文件中的数据速度优于读取数据库中的数据速度”。

——前提:在配置文件中的数据不是很多的情况下没问题,至于配置文件数据量达到nM的情况,以后进行测试。

网络资料:

I/0读写快还是插入数据库快

http://www.javaeye.com/problems/30594

io写硬盘
优势:本地文件系统,不需要通过jdbc驱动序列化进行网络传输,不存在网络问题
劣势:跟硬盘性能有关,没有优化(当然自己可以封装,例如:使用内存缓存,然后批量触发,但这样会占用少量内存资源,也比较麻烦)

存数据库
优势:如果连接已经存在,客户端无需关心服务端的处理(cilent发送过去 ->服务端缓存-〉结束),无需像写硬盘等待写入结束。自己负责事情少,检索方便!
劣势:网络问题,如果连接不存在,有连接数据库的开销

[精彩] 读写文件不是效率很低的嘛,那么数据库为何效率高呢

http://www.chinaunix.net/jh/23/527591.html


正常情况读写文件系统比数据库快一到两个数据级

数据库的查询,大量并发的时候可能最浪费时间的是connect和close,数据库的优势是体现的大量数据的查询、统计以及并发读写,不是在速度上

以Oracle为例
1。读
使用数据库有时候比file要慢
比如说第一次使用某个数据时,Oracle肯定会比直接读file慢
但是,如果第二次要用到这个数据,Oracle直接从mem里读取,这样就比file要快
2。写
Oracle对dataupdate/insert的确是可以延迟写到磁盘的
它是先在mem里作修改,再由专门的dbwr来写数据到磁盘。
3。个人认为,数据库和文件并不存在可比性
用文件,很难实现sql语句。
但是,使用数据库会耗用更多的系统资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值