CommandLineProgram for measuring java I/O speeds for large plain-text or gzipped files.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3532 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
d1a4c4f0d3
commit
338bb9adf4
|
|
@ -0,0 +1,72 @@
|
||||||
|
package org.broadinstitute.sting.oneoffprojects.tools;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.zip.GZIPInputStream;
|
||||||
|
|
||||||
|
import org.broadinstitute.sting.commandline.Argument;
|
||||||
|
import org.broadinstitute.sting.commandline.CommandLineProgram;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to test how long it takes to read through a text files and gzipped files.
|
||||||
|
* If the passed-in filename ends with .gz, it will be read using GZIPInputStream.
|
||||||
|
* Otherwise, its read using FileReader.
|
||||||
|
*/
|
||||||
|
public class JavaIOSpeedTest extends CommandLineProgram {
|
||||||
|
|
||||||
|
@Argument(fullName = "input", shortName = "i", doc = "file to read", required = true) public String filename;
|
||||||
|
@Argument(fullName = "buffer_size", shortName = "s", doc = "read buffer size", required=false) public int bufferSize = -1;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int execute() {
|
||||||
|
System.out.println("Filename: " + filename);
|
||||||
|
try {
|
||||||
|
final File file = new File(filename);
|
||||||
|
final Reader reader;
|
||||||
|
if(filename.endsWith(".gz")) {
|
||||||
|
reader = new InputStreamReader(new GZIPInputStream(new BufferedInputStream(new FileInputStream(file))));
|
||||||
|
} else {
|
||||||
|
reader = new FileReader(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
final BufferedReader br;
|
||||||
|
if(bufferSize != -1) {
|
||||||
|
br = new BufferedReader(reader, bufferSize);
|
||||||
|
} else {
|
||||||
|
br = new BufferedReader(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Reading...");
|
||||||
|
int incr = 10000000;
|
||||||
|
int next = incr;
|
||||||
|
int counter = 0;
|
||||||
|
while(br.ready()) {
|
||||||
|
br.readLine();
|
||||||
|
if(++counter == next) {
|
||||||
|
next += incr;
|
||||||
|
System.err.println(new Date() + ": " + filename + " - read " + counter + " lines...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Read " + counter + " lines from " + filename);
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
System.err.println("ERROR: " + e);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String args[])
|
||||||
|
{
|
||||||
|
CommandLineProgram.start(new JavaIOSpeedTest(), args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue