udr1990
udr1990

Reputation: 265

Java File IO performance?

I am using RandomAccesFile and writing data in chunks of 10MB at a time. Following is source. Here it is writing 10MB data in write call. It's taking ~700ms. Is there any way to improve this using file channel or some other means. FileSystem is NFS.

        RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
        OutputStream output = Channels.newOutputStream(randomAccessFile.getChannel());
            randomAccessFile.seek(offset);

        output.write(data, 0, dataLength);//10MB
        output.flush();

Upvotes: 1

Views: 1252

Answers (1)

specializt
specializt

Reputation: 1911

NFS is, by definition, nonlocal so you're pretty much limited to your network bandwidth - being able to write 10MiB in 700ms is equal to having a bandwidth of 14,28 MiB/s - that'd be about 119Mbit so im guessing you were actually talking about MB/s in which case you still had 114Mbit .... well, i will assume you're on Gigabit-LAN.

In that case, you indeed would have some performance issues because gbit-LAN can do much more than that. There are several steps to find the root cause :

  • check if another application is running
  • check if your NIC has some faulty settings (reset to factory default if possible)
  • check if another application is able to transfer data faster than that

and finally (if the problem persists):

Upvotes: 1

Related Questions