V3.17.0

Csv Performance release, now have consistently better perf that last univocity release.

  • #499 ParallelReader performance improvement
  • #504 CharConsumer on demand specialisation

You can now use the ParallelReader directly from the DSL.

    CsvParser.dsl()
        .parallelReader()
        .iterator(new File("mycsv.csv"));

Only recommended for bigish files - 20 MB at least -, and if you have spare cores.

mapping-benchmark against Univocity 2.6.1 for 1.000.000 rows.

Benchmark                                       (parallel)  (quotes)    Score   Error  Units
SfmCsvParserBenchmark.parseCsvIterate           false          false  330.402 ± 2.923  ms/op
UnivocityCsvParserBenchmark.parseCsv            false          false  330.099 ± 0.942  ms/op

SfmCsvParserBenchmark.parseCsvIterate           false           true  362.980 ± 8.940  ms/op
UnivocityCsvParserBenchmark.parseCsv            false           true  386.221 ± 5.162  ms/op

SfmCsvParserBenchmark.parseCsvIterate            true          false  195.554 ± 0.999  ms/op
UnivocityConcurrentCsvParserBenchmark.parseCsv    N/A          false  204.678 ± 0.864  ms/op
UnivocityCsvParserBenchmark.parseCsv             true          false  210.129 ± 0.646  ms/op

SfmCsvParserBenchmark.parseCsvIterate            true           true  226.081 ± 2.477  ms/op
UnivocityConcurrentCsvParserBenchmark.parseCsv    N/A           true  239.410 ± 2.555  ms/op
UnivocityCsvParserBenchmark.parseCsv             true           true  250.737 ± 2.526  ms/op