package oi; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /** * Created by sherxon on 4/27/17. */ /** * This approach uses direct buffering therefore eliminates read calls. * We should be careful because of EOF exception. * */ public class UsingDirectBuffering { public static void main(String[] args) throws IOException { //-------------- Test reading 1 MB file. -------------------- StopWatch.start(); BufferedInputStream inputStream= new BufferedInputStream(new FileInputStream(new File(DumpDataWriter.input1MB))); byte[] buffer= new byte[2048]; // 2KB while (inputStream.read(buffer)!=-1){} // 75 ms long duration = StopWatch.stop(); System.out.println(duration); //-------------- Test reading 10 MB file. -------------------- StopWatch.start(); BufferedInputStream inputStream2 = new BufferedInputStream(new FileInputStream(new File(DumpDataWriter.input10MB))); byte[] buffer2= new byte[1024*1024 * 2]; // 2MB while (inputStream2.read(buffer2)!=-1){} // 90 ms long duration2 = StopWatch.stop(); System.out.println(duration2); //-------------- Test reading 100 MB file. -------------------- StopWatch.start(); BufferedInputStream inputStream3 = new BufferedInputStream(new FileInputStream(new File(DumpDataWriter.input100MB))); byte[] buffer3= new byte[2048 * 1024]; // 2MB while (inputStream3.read(buffer3)!=-1){} // 280 ms long duration3 = StopWatch.stop(); System.out.println(duration3); //-------------- Test reading 1000 MB file. -------------------- StopWatch.start(); BufferedInputStream inputStream4 = new BufferedInputStream(new FileInputStream(new File(DumpDataWriter.input1000MB))); byte[] buffer4= new byte[2048*1024*5]; // 10MB while (inputStream4.read(buffer4)!=-1){} // 3300 ms long duration4 = StopWatch.stop(); System.out.println(duration4); } }