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