Skip to content

Latest commit

 

History

History
21 lines (13 loc) · 1.1 KB

README.md

File metadata and controls

21 lines (13 loc) · 1.1 KB

Csvex

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.

Performance

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.

Installation

See the Csvex Hex package

Todo

  • Add an Elixir Stream interface. It's expected to have lower performance.
  • Replace the clunky and limiting implementation of erlang_folder/1 in Csvex.Parse with a macro.
  • Add support for generating CSV to make it more complete. libcsv supports it, so it could be implemented in the csv Erlang lib first.

License

The MIT License (MIT). See LICENSE for details.