首先不适用缓存技术,读取数据:

//非缓冲计时
package com.swust;
import java.io.*;
/*
*功能:创建一个程序,写10000个随机双精度的数到一个文件中,同时测试运用缓冲和非缓冲技术
*
* 读取数据,求平均数,进行这种操作所需要的时间
*分析:
* 在写开始操作之前,先获取当前时间
* 再将它同操作结束后的时间作比较,以此判断各个操作的时间
*实现:
* 仍使用两个类:
*/
public class flowTest { public static void main(String[] args) { double sum=0;
try{
long start=System.currentTimeMillis();
FileInputStream fileIn = new FileInputStream("sample.ini");
DataInputStream in=new DataInputStream(fileIn);
for (int i=0;i<10000;i++){
sum+= in.readDouble();
}
in.close();
long stop=System.currentTimeMillis();
System.out.println("平均数:"+(sum/10000));
System.out.println("程序运行了:"+(stop-start));
}catch(Exception e){
System.out.println(e.toString());
} } }

运行结果:

平均数:0.5061121254198577
程序运行了:16


使用缓冲技术:

//非缓冲计时
package com.swust;
import java.io.*;
/*
*功能:创建一个程序,写10000个随机双精度的数到一个文件中,同时测试运用缓冲和非缓冲技术
*
* 读取数据,求平均数,进行这种操作所需要的时间
*分析:
* 在写开始操作之前,先获取当前时间
* 再将它同操作结束后的时间作比较,以此判断各个操作的时间
*实现:
* 仍使用两个类:
*/
public class flowTest { public static void main(String[] args) { double sum=0;
try{
long start=System.currentTimeMillis();
FileInputStream fileIn = new FileInputStream("sample.ini");
////////////////////////////////////////
BufferedInputStream bfs_in =new BufferedInputStream(fileIn);
DataInputStream in=new DataInputStream(bfs_in);
////////////////////////////////////////
for (int i=0;i<10000;i++){
sum+= in.readDouble();
}
in.close();
long stop=System.currentTimeMillis();
System.out.println("使用缓冲后\n平均数:"+(sum/10000));
System.out.println("程序运行了:"+(stop-start));
}catch(Exception e){
System.out.println(e.toString());
} } }

运行结果:

使用缓冲后
平均数:0.5061121254198577
程序运行了:0

完成这个操作几乎不到一秒的时间,这种改善非常大,读取数据的时间几乎可以忽略,所以在大数据输入的时候应该采用缓冲流

java 非缓冲与缓冲数据读取比较的更多相关文章

  1. Java学习-028-JSON 之二 -- 数据读取

    JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...

  2. Java IO总结之缓冲读入文件

    package com.io; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException ...

  3. Java转换流、缓冲流、流操作规律整理

    转换流 1.1                OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字 ...

  4. java - >IO流_缓冲流(高效流)

    缓冲流(高效流) 在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办? Java中提高了一套缓冲 ...

  5. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  6. JAVA通过HTTP方式获取数据

    测试获取免费天气数据接口:http://www.weather.com.cn/data/sk/101190408.html URL数据如下图: 代码部分: package https; import ...

  7. Java基础IO流 ,文件读取,由易至难

    最基础的读取文件 import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;imp ...

  8. Java中9种IO的读取方式

    数据的读写,按照数据类型可以分为两种:字符流和字节流(二者区别?).所以数据读取方式按照数据类型也可以分为两类:字节流的读取和字符流的读取. 一.字节流读取操作: |  | |-----1.FileI ...

  9. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

  10. Java 非线程安全的HashMap如何在多线程中使用

    Java 非线程安全的HashMap如何在多线程中使用 HashMap 是非线程安全的.在多线程条件下,容易导致死循环,具体表现为CPU使用率100%.因此多线程环境下保证 HashMap 的线程安全 ...

随机推荐

  1. 在IOS应用中从竖屏模式强制转换为横屏模式

    http://www.cnblogs.com/mrhgw/archive/2012/07/18/2597218.html 在 iPhone 应用里,有时我们想强行把显示模式从纵屏改为横屏(反之亦然), ...

  2. php部分--文件操作

    php中的文件指的是文件和文件夹,不是单指文件. 1.判断文件(判断是文件还是文件夹) 找文件,输出结果为file,代表的是文件. var_dump(filetype("./aa.txt&q ...

  3. 步进控件——UIStepper

    步进控件,可用于替换传统用于输入值的文本框.步进控件提供了“+”和“-”两个按钮,用来改变stepper内部value的增加或减少,调用的事件是UIControlEventValueChanged.由 ...

  4. IOS9中联系人对象的使用及增删改查操作的函数封装

    之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...

  5. 今天学习了下,如何破解wifi

    破解了隔壁的wif,得罪了,哥哥要蹭网一段时间. 主要思路:安装linux环境.这里我选择了虚拟机加cdlinux .运行里面的min抓得握手包,然后淘宝花10元跑下包,因为自己的电脑不行,跑费时间太 ...

  6. intel Xeon(R) CPU E5-2650 v2 性能测试报告

                                          intel  Xeon(R) CPU E5-2650 v2                                 ...

  7. TF-IDF算法 笔记

    TF-IDF:Term Frequency-Inverse Document Frequency(词频-逆文档频度):主要用来估计一个词在一个文档中的重要程度. 符号说明: 文档集:D={d1,d2, ...

  8. 【Xilinx-ZYNQ ucos-iii的移植与开发】-00-开始

    前一段时间,调试了一块ZYNQ的板子,上面用到了ucos-iii操作系统,最终在该板子上实现了操作系统的运行,并实现了一些外设模块的功能,主要包括PWM,I2C,GPIO,两级中断. 等有空了总结一下 ...

  9. 用JS的数组缓存一些东西

    var cache_index = new Array(); //首页的ajax缓存 //ajax 推荐的游戏和软件 function change_tuijian(sid,div_class){ i ...

  10. MySQL服务器的线程数查看方法

    mysql重启命令:/etc/init.d/mysql restart MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证MySQL服务器健康平稳地运行.Threads_created表示 ...