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

//非缓冲计时
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. cron 执行php文件

    php执行的命令要写全路径,不然无法执行

  2. 如何在Eclipse中安装PDT插件来开发PHP

    之前查过很多PDT的安装方法,60%都是让人直接安装All-in-one的PHP eclipse版本,纯属让人无语,而有些给出的PDT安装链接无法正确下载插件,对此,给出了我安装过的PDT插件下载地址 ...

  3. 《算法导论》Problem 2-4 Inversions

    在Merge Sort的基础上改改就好了. public class Inversions { public static int inversions(int [] A,int p, int r) ...

  4. LPC1788定时器使用

    #ifndef __TIM_H_ #define __TIM_H_ #include "common.h" extern u8 tim1_mr0_flag; void tim0_c ...

  5. Mapreduce TopK

      思想比较简单,就是每个通过map来获取当前的数据块中的的topk个数据,然后将他们以相同的key值放到reduce中,最后通过reduce来对这n*k个数据排序并获得topk个数据.具体的就是建立 ...

  6. lpc1768ADC使用

    Lpc1768内置有一个ad外设,该外设有八路复用输入,所以,可以同时接八路ad设备,同时还支持触发转换模式,由外部端口进行ad触发,ad转换完成之后可以产生中断 Lpc1768支持的转换模式有两种, ...

  7. leetcode-位运算

    位运算可以大大减小算法空间复杂度,提高效率,很巧妙! 先说一下位运算的简单用法 1. 按位与 & 用途:清零,取一个数中的某些指定位,保留一个数中的某些指定位 2. 按位或 | 用途:将一个数 ...

  8. [Angular Tutorial] 13 -REST and Custom Services

    在这一步中,我们将会改变我们获取数据的方式. ·我们定义一个代表RESTful客户端的自定义服务.使用这个客户端,我们可以用一种更简单的方法向服务端请求数据,而不用处理更底层的$httpAPI,HTT ...

  9. CentOS Linux解决 Device eth0 does not seem to be present

    通过OVF部署Linux主机后提示 ringing up interface eth0:  Device eth0 does not seem to be present,delaying initi ...

  10. Grunt安装中遇到的问题汇总

    Grunt安装中遇到的问题汇总 1.如果是windows下的dos中安装Grunt,必须以管理员身份登录(第一个坑) 登录方法是: 方法一:开始>所有程序>附件>命令提示符上右键&g ...