J
James Edward Gray II
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:
(e-mail address removed)
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:
(e-mail address removed)
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
========================
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:
(e-mail address removed)
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:
(e-mail address removed)
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