Allow performance test to traverse column values (optional).

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/csv/trunk@1397559 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gary D. Gregory 2012-10-12 13:31:06 +00:00
parent 53fd86dfbc
commit 883a0e91cf
1 changed files with 14 additions and 8 deletions

View File

@ -30,6 +30,7 @@ import java.io.Reader;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Ignore; import org.junit.Ignore;
@ -64,13 +65,18 @@ public class PerformanceTest {
return new BufferedReader(new FileReader(BIG_FILE)); return new BufferedReader(new FileReader(BIG_FILE));
} }
private long parse(final Reader in) throws IOException { private long parse(final Reader in, boolean traverseColumns) throws IOException {
final CSVFormat format = CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(false); final CSVFormat format = CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(false);
long count = 0; long recordCount = 0;
for (final Object record : format.parse(in)) { for (final CSVRecord record : format.parse(in)) {
count++; recordCount++;
if (traverseColumns) {
for (String value : record) {
// do nothing for now
}
}
} }
return count; return recordCount;
} }
private void println() { private void println() {
@ -89,9 +95,9 @@ public class PerformanceTest {
return count; return count;
} }
public long testParseBigFile() throws Exception { public long testParseBigFile(boolean traverseColumns) throws Exception {
final long startMillis = System.currentTimeMillis(); final long startMillis = System.currentTimeMillis();
final long count = this.parse(this.getBufferedReader()); final long count = this.parse(this.getBufferedReader(), traverseColumns);
final long totalMillis = System.currentTimeMillis() - startMillis; final long totalMillis = System.currentTimeMillis() - startMillis;
this.println(String.format("File parsed in %,d milliseconds with Commons CSV: %,d lines.", totalMillis, count)); this.println(String.format("File parsed in %,d milliseconds with Commons CSV: %,d lines.", totalMillis, count));
return totalMillis; return totalMillis;
@ -101,7 +107,7 @@ public class PerformanceTest {
public void testParseBigFileRepeat() throws Exception { public void testParseBigFileRepeat() throws Exception {
long bestTime = Long.MAX_VALUE; long bestTime = Long.MAX_VALUE;
for (int i = 0; i < this.max; i++) { for (int i = 0; i < this.max; i++) {
bestTime = Math.min(this.testParseBigFile(), bestTime); bestTime = Math.min(this.testParseBigFile(false), bestTime);
} }
this.println(String.format("Best time out of %,d is %,d milliseconds.", this.max, bestTime)); this.println(String.format("Best time out of %,d is %,d milliseconds.", this.max, bestTime));
} }