From: James Edward Gray II Date: 2005-11-17T05:31:21+09:00 Subject: [ANN] FasterCSV 0.1.3--CSV parsing without the wait! FasterCSV 0.1.3 Released ======================== FasterCSV grew out of my involvement in a discussion on the Ruby Core mailing list. The heart of this new CSV parser is a single, hyper- optimized Regular Expression from "Mastering Regular Expressions, Second Edition," further enhanced by myself. This library would not exist if it weren't for Ara.T.Howard's tireless attempts to break it. ;) I'm very grateful for all the help and insight Ara gave that made a robust solution possible. Thank you! If you use this library, don't be shy with the feedback! Tell me what's working and what's not: james@grayproductions.net What is FasterCSV? ------------------ (from the README) FasterCSV is intended as a replacement to Ruby's standard CSV library. It was designed to address concerns users of that library had and it has three primary goals: 1. Be significantly faster than CSV while remaining a pure Ruby library. * There are unit tests ensuring this very thing. (Thanks for the idea Rob!) * It really is faster. I mean it: $ rake benchmark (in /Users/james/Documents/Ruby/faster_csv) time ruby -r csv -e 'CSV.foreach("test/test_data.csv") { | row| }' real 0m25.758s user 0m25.652s sys 0m0.076s time ruby -r lib/faster_csv -e 'FasterCSV.foreach("test/ test_data.csv") { |row| }' real 0m2.902s user 0m2.866s sys 0m0.030s 2. Use a smaller and easier to maintain code base. * I still want it to include all the CSV functionality you need though! (Do tell me if you find something missing.) * ...And nice shiny new features! * Again, it really is smaller: $ rake stats (in /Users/james/Documents/Ruby/faster_csv) +----------------------+-------+-------+---------+--------- +-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+--------- +-----+-------+ | FasterCSV | 400 | 133 | 2 | 12 | 6 | 9 | | Units | 439 | 334 | 5 | 23 | 4 | 12 | +----------------------+-------+-------+---------+--------- +-----+-------+ | Total | 839 | 467 | 7 | 35 | 5 | 11 | +----------------------+-------+-------+---------+--------- +-----+-------+ Code LOC: 133 Test LOC: 334 Code to Test Ratio: 1:2.5 3. Improve on the CSV interface. * My opinion, of course. Migrating from CSV to FasterCSV? -------------------------------- The README includes a section on the differences and you can read that here: http://fastercsv.rubyforge.org/ You call also see general usage in the documentation of the interface, right here: http://fastercsv.rubyforge.org/classes/FasterCSV.html If FasterCSV isn't meeting your needs, I want to here about it: james@grayproductions.net Coming soon! ------------ (from the TODO) * Add support for accessing fields by headers (from first row of document). (I promise Ara, it's next on the list!) * Add "convertors" for switching numbers to Integers or Floats, dates to Date or Time objects, etc. Where can I learn more? ----------------------- FasterCSV is hosted on RubyForge. Project page: http://rubyforge.org/projects/fastercsv/ Documentation: http://fastercsv.rubyforge.org/ Downloads: http://rubyforge.org/frs/?group_id=1102 How do I get FasterCSV? ----------------------- FasterCSV is a gem, so as long as you have RubyGems installed it's as simple as: $ sudo gem install fastercsv If you need to install RubyGems, you can download it from: http://rubyforge.org/frs/?group_id=126&release_id=2471 FasterCSV can also be installed manually. Just download the latest release and follow the instructions in INSTALL: http://rubyforge.org/frs/?group_id=1102&release_id=3545 James Edward Gray II