Go C Perl Scala
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
This project benchmarks the performance of Perl, Go and Scala with some basic data processing from a CSV file. It's not an amazingly-realistic task, but it's vaguely similar to some of the real-world projects I do, and thus perhaps more comparable than some of the totally synthetic benchmarks out there. Read TASK to see what the specification is. Use make_file.pl to create the source file, ie. ./make_file.pl > input.csv Then for each test, run it with the input file, and pipe the output somewhere. For example: ./go/testread input.csv > output.csv (or pipe to /dev/null) In my testing, I was using Scala 2.8.0.RC1 on Java 1.6, w/OpenCSV.sf.net Perl 5.10.1 w/Text::CSV 1.17 and Text::CSV_XS 0.72 Go (May 2010 build) I received the following results: With a 100,000 row CSV file, they looked like: Perl - 1.089 secs Scala - 1.857 secs Go - 1.682 secs With a 1,000,000 row file: Perl - 10.96 s Scala - 9.835 s Go - 16.77 s With a 10,000,000 row file: Perl - 111.3 s Scala - 89.05 s Go - 154.3 s I am interested to receive (sensible) optimisations and improvements to the code, and even implementations in other languages. (I'd love to see some in C, C++, Ruby and Python, for starters. I'll probably do them myself, eventually.)