josevalim
NimbleCSV - a small and fast CSV parsing and dumping library for Elixir
Hello everyone,
We have just released NimbleCSV which is a small and fast CSV parsing library for Elixir. It allows developers to define their own parsers so we can rely on binary patterns for efficiency reasons. It also supports dumping and data streaming. We hope this will be an excellent companies along side the efforts we have put on GenStage (and GenStage.Flow):
Docs: https://hexdocs.pm/nimble_csv
Source: https://github.com/plataformatec/nimble_csv
Most Liked
andre1sk
Amazing, how do you find the time to do everything? 
benwilson512
Initial results indicate that NimbleCSV is 10x faster than CSV when parsing from a file stream, and 10x faster than ExCSV when parsing a literal string (ExCSV doesn’t do streams, CSV doesn’t do raw strings).
Will post full results in a bit, along with CSV writing benchmarks.
ericmj
But that’s what the library does now anyway, it’s just hidden behind another macro. Using use would improve composability and you wouldn’t have to pass in the moduledocs as an option.
OvermindDL1
Oh that is great timing! I’m just about to need to parse CSV files from another system. 
michalmuskala
I tried looking what would be the performance difference if the separators weren’t bound at compile-time. The difference looks to be more-or-less 1.6x, which is quite surprising - i though it would be much worse.
The code is here: https://github.com/michalmuskala/nimble_csv/tree/no-macro-magic
While the difference for decoding is significant, the difference for encoding seems to be completely negligible.







