This is an Elixir wrapper for the high-performance NIF based Erlang CSV parser github.com/martin-torhage/csv. The Erlang lib has been used in multiple production systems for several years.
Csvex is in simple tests more than 6 times faster than the most popular Elixir CSV parser csv. At the same time the total CPU usage for parsing the same file is 93% lower.
For even higher performance, you can select which columns to be returned, and therefor reduce the amount of data copied by the NIF into the process heap. See the docs for Csvex.Parse
for more info.
See the Csvex Hex package
- Add an Elixir Stream interface. It's expected to have lower performance.
- Replace the clunky and limiting implementation of
erlang_folder/1
inCsvex.Parse
with a macro. - Add support for generating CSV to make it more complete.
libcsv
supports it, so it could be implemented in thecsv
Erlang lib first.
The MIT License (MIT). See LICENSE for details.