From d37508b7a192fa550219e7dc43e2512d2d559d8f Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Mon, 17 Dec 2018 19:05:34 +0100 Subject: [PATCH] Pattern.split is faster than StringUtils.splitPreserveAll Document the fact, so that I do not have to repeat the same test a third time. --- .../java/org/lucares/pdbui/CsvToEntryTransformer.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java b/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java index 9b56476..c4cd1ff 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java @@ -26,9 +26,13 @@ public class CsvToEntryTransformer implements LineToEntryTransformer { public Optional toEntry(final String line) throws IOException { Optional result; try { - + // For future reference: + // Pattern.split is actually faster than StringUtils.splitPreserveAll when the + // test runs longer. + // It seems that the JIT is compiling StringUtils.splitPreserveAll earlier, but + // Pattern.split is ending up getting the faster code in the long run. final String[] columns = splitPattern.split(line); - if (columns.length == headers.length && !columns[0].startsWith("@")) { + if (columns.length == headers.length && columns[0].length() > 0 && columns[0].charAt(0) != '@') { result = createEntry(columns); @@ -52,7 +56,6 @@ public class CsvToEntryTransformer implements LineToEntryTransformer { switch (headers[i]) { case "@timestamp": epochMilli = fastISODateParser.parseAsEpochMilli(columns[i]); - ; break; case "duration": duration = Long.parseLong(columns[i]);