Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Stream Write: 0.37
- Mapped Write: Exception in thread "main" java.nio.BufferOverflowException
- at java.nio.Buffer.nextPutIndex(Buffer.java:521)
- at java.nio.DirectIntBufferS.put(DirectIntBufferS.java:297)
- at
- com.thinkInJava.study.ioSystem.MappedIO$2.test(MappedIO.java:52)
- at
- com.thinkInJava.study.ioSystem.MappedIO$Tester.runTest(MappedIO.java:21)
- at
- com.thinkInJava.study.ioSystem.MappedIO.main(MappedIO.java:106)
- import java.nio.*;
- import java.nio.channels.*;
- import java.io.*;
- public class MappedIO {
- //Byte size
- private static int numOfInts = 4000000;
- private static int numOfUbuffInts = 200000;
- //Test run time
- private abstract static class Tester {
- private String name;
- public Tester(String name) { this.name = name; }
- public void runTest() {
- System.out.print(name + ": ");
- try {
- long start = System.nanoTime();
- test();
- double duration = System.nanoTime() - start;
- //Convert to seconds
- System.out.format("%.2fn", duration/1.0e9);
- } catch(IOException e) {
- throw new RuntimeException(e);
- }
- }
- public abstract void test() throws IOException;
- }
- //Compare the performance of six io streams
- private static Tester[] tests = {
- new Tester("Stream Write") {
- public void test() throws IOException {
- DataOutputStream dos = new DataOutputStream(
- new BufferedOutputStream(
- new FileOutputStream(new File("X:\IntelliJ IDEA 2019.1.3\JavaCode\src\com\thinkInJava\study\ioSystem\TestFiles\temp.tmp"))));
- for(int i = 0; i < numOfInts; i++)
- dos.writeInt(i);
- dos.close();
- }
- },
- new Tester("Mapped Write") {
- public void test() throws IOException {
- FileChannel fc =
- new RandomAccessFile("X:\IntelliJ IDEA 2019.1.3\JavaCode\src\com\thinkInJava\study\ioSystem\TestFilestemp.tmp", "rw")
- .getChannel();
- IntBuffer ib = fc.map(
- FileChannel.MapMode.READ_WRITE, 0, fc.size())
- .asIntBuffer();
- for(int i = 0; i < numOfInts; i++)
- ib.put(i);
- fc.close();
- }
- },
- new Tester("Stream Read") {
- public void test() throws IOException {
- DataInputStream dis = new DataInputStream(
- new BufferedInputStream(
- new FileInputStream("X:\IntelliJ IDEA 2019.1.3\JavaCode\src\com\thinkInJava\study\ioSystem\TestFilestemp.tmp")));
- for(int i = 0; i < numOfInts; i++)
- dis.readInt();
- dis.close();
- }
- },
- new Tester("Mapped Read") {
- public void test() throws IOException {
- FileChannel fc = new FileInputStream(
- new File("X:\IntelliJ IDEA 2019.1.3\JavaCode\src\com\thinkInJava\study\ioSystem\TestFilestemp.tmp")).getChannel();
- IntBuffer ib = fc.map(
- FileChannel.MapMode.READ_ONLY, 0, fc.size())
- .asIntBuffer();
- while(ib.hasRemaining())
- ib.get();
- fc.close();
- }
- },
- new Tester("Stream Read/Write") {
- public void test() throws IOException {
- RandomAccessFile raf = new RandomAccessFile(
- new File("X:\IntelliJ IDEA 2019.1.3\JavaCode\src\com\thinkInJava\study\ioSystem\TestFilestemp.tmp"), "rw");
- raf.writeInt(1);
- for(int i = 0; i < numOfUbuffInts; i++) {
- raf.seek(raf.length() - 4);
- raf.writeInt(raf.readInt());
- }
- raf.close();
- }
- },
- new Tester("Mapped Read/Write") {
- public void test() throws IOException {
- FileChannel fc = new RandomAccessFile(
- new File("X:\IntelliJ IDEA 2019.1.3\JavaCode\src\com\thinkInJava\study\ioSystem\TestFilestemp.tmp"), "rw").getChannel();
- IntBuffer ib = fc.map(
- FileChannel.MapMode.READ_WRITE, 0, fc.size())
- .asIntBuffer();
- ib.put(0);
- for(int i = 1; i < numOfUbuffInts; i++)
- ib.put(ib.get(i - 1));
- fc.close();
- }
- }
- };
- public static void main(String[] args) {
- for(Tester test : tests)
- test.runTest();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement