java 非缓冲与缓冲数据写入比较
//非缓冲计时
package com.swust;
import java.io.*;
/*
*功能:创建一个程序,写10000个随机双精度的数到一个文件中,同时测试运用缓冲和非缓冲技术
* 进行这种操作所需要的时间
*分析:
* 写双精度数到磁盘中的代码和之前文章类似。在写开始操作之前,先获取当前时间
* 再将它同操作结束后的时间作比较,以此判断各个操作的时间
*实现:
* 仍使用两个类:
*/
public class flowTest { public static void main(String[] args) { try{
long start=System.currentTimeMillis();
FileOutputStream fs_out =new FileOutputStream("sample.ini");
DataOutputStream out=new DataOutputStream(fs_out);
for (int i=0;i<10000;i++){
out.writeDouble(Math.random());
}
out.close();
long stop=System.currentTimeMillis();
System.out.println("程序运行了:"+(stop-start));
}catch(Exception e){
System.out.println(e.toString());
} } }
程序运行了:31
使用缓冲的对比:
//缓冲计时
package com.swust;
import java.io.*;
/*
*功能:创建一个程序,写10000个随机双精度的数到一个文件中,同时测试运用缓冲和非缓冲技术
* 进行这种操作所需要的时间
*分析:
* 此时使用缓冲的方法,只需将文件输出流和数据输出流相连之前把它“包装”到一个缓冲输出流中去
*实现:
* 仍使用两个类:
* DataOutputStream的数据通过BufferedOutputStream“包装”,然后使用桥梁FileOutputStream进行
* “流”操作
*/
public class flowTest { public static void main(String[] args) { try{
long start=System.currentTimeMillis();
FileOutputStream fs_out =new FileOutputStream("sample.ini");
/////////////////////////////////// BufferedOutputStream bfs_out =new BufferedOutputStream(fs_out);
DataOutputStream out=new DataOutputStream(bfs_out); ///////////////////////////////////
for (int i=0;i<10000;i++){
out.writeDouble(Math.random());
}
out.close();
long stop=System.currentTimeMillis();
System.out.println("程序运行了:"+(stop-start));
}catch(Exception e){
System.out.println(e.toString());
} } }
程序运行了:15
总结:缓冲流是一个增加了内部缓存的流。当一个简单的写请求产生后,数据并不是马上写到所连接的输出流和文件中,而是写入高速缓存。
当缓冲写满或关闭流之后,再一次性从缓存中写入输出流或者文件中。这样可以减少实际写请求的次数,以此提高数据写入文件中的效率。
类似地,从一个带有缓存的输入流读取数据,也可先把缓存读满,随后的读请求直接从缓存中而不是从文件中读取,这种方式大大提高了读取数据的效率。
java 非缓冲与缓冲数据写入比较的更多相关文章
- java使用poi包将数据写入Excel表格
		1.Excel相关操作代码 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ... 
- java后端导入excel将数据写入数据库
		参考:https://www.cnblogs.com/hanfeihanfei/p/7079210.html @RequestMapping("/importExcel.do") ... 
- GeoMesa Java API-写入与查询数据
		GeoMesa Java API-写入与查询数据 写入数据 DataStore SimpleFeatureType SimpleFeature 写入 查询数据 几个常用查询条件 设置最大返回条目: 设 ... 
- java 非缓冲与缓冲数据读取比较
		首先不适用缓存技术,读取数据: //非缓冲计时 package com.swust; import java.io.*; /* *功能:创建一个程序,写10000个随机双精度的数到一个文件中,同时测试 ... 
- Java转换流、缓冲流、流操作规律整理
		转换流 1.1 OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字 ... 
- 6.3(java学习笔记)缓冲流
		一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ... 
- java - >IO流_缓冲流(高效流)
		缓冲流(高效流) 在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办? Java中提高了一套缓冲 ... 
- 简单通过java的socket&serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中
		业务需求说明,由于公司数据中心处于刚开始部署的阶段,这需要涉及其它部分将数据全部汇总到数据中心,这实现的方式是同上传json文件,通过采用socket&serversocket实现传输. 其中 ... 
- java将数据写入到txt文件中(txt有固定的格式)
		java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ... 
随机推荐
- 关于安装Windows Live Writer后,内存被占满情况解决
			为了方便写博客,昨天安装了Windows Live Writer2012,但是出现了在安装好后还是正常的,第二天一开机就出现了内存被占满的情况,在资源监视器里看了下也没发现有什么问题.想还是重启一下, ... 
- linear-gradient线性渐变
			作者:zccst CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径向渐变). 1,在mozila background: -moz-l ... 
- Android自定义控件(状态提示图表) (转)
			源:Android自定义控件(状态提示图表) 源:Android应用开发 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 前面分析 ... 
- 绕过网站安全狗拦截,上传Webshell技巧总结(附免杀PHP一句话)
			这篇文章我介绍一下我所知道的绕过网站安全狗上传WebShell的方法. 思路是:修改HTTP请求,构成畸形HTTP请求,然后绕过网站安全狗的检测. 废话不多说,切入正题.... 1.实验环境: Win ... 
- 安装了C
			2014-04-09 13:19:30 大学里看的第一本编程书籍,就是C.但是一直没有编译. 今天首次安装,我也佩服当初我是怎么通过C二级的. 上午写了sds手册.其中的制图用的visio制图,非常好 ... 
- python3自动下载优酷视频小程序
			我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们.尽管chrome和firefox的一些插件可以下载,但有 ... 
- JVM面试
			深入理解Java内存模型:http://www.cnblogs.com/skywang12345/p/3447546.html http://www.infoq.com/cn/articles/jav ... 
- SVN下载分支、合并分支
			http://www.cnblogs.com/armyfai/p/3985660.html(不知道实际工作中怎么使用,有好多步骤感觉不是太理解) 从远处把库fork到本地,会有一个库文件夹 服务器库结 ... 
- Nodejs之发送邮件nodemailer
			nodejs邮件模块nodemailer的使用说明 1.介绍 nodemailer是node的一个发送邮件的组件,其功能相当强大,普通邮件,传送附件,邮件加密等等都能实现,而且操作也十分方便. nod ... 
- C#键盘事件处理(来源网上)
			C#键盘事件处理 如果你希望用户按F1弹出chm帮助,代码如下: private void FrmMain_Load(object sender, EventArgs e) { this.KeyPre ... 
