Articles
ColdFusion CSV Processing Speed Test Results: October 2025
Here's a quick summary of the CSV Speed Test results after performing ~10 executions per method. (NOTE: Smaller is better.)
For all java-based tests, when iterating over the CSV data, new States were added to a struct with an array with 2 elements, count and subtotal, and then increased with each row's data.
The CSV file used for testing is the 150mb "fraudTest.csv" from the Kaggle Credit Card Transactions Fraud Detection Dataset. All tests were performed using CommandBox with a ColdFusion 2025,0,04,331512 server with Java 24.0.2 running on a Windows 11 laptop.
More background regarding this test can be found here.

Analysis
- DuckDB and OctoSQL are significantly faster (sub-second range) compared to others.
- LuceeSpreadsheet has the highest durations, peaking near 18 seconds.
- csvprocess_2025 and csvread_2025 show moderate performance but with noticeable variability.
- OpenCSV5 and its builder variant have mid-range times, but the builder variant shows occasional spikes (e.g., >5 seconds).
- SpreadsheetCFML variants are slower than OpenCSV but faster than LuceeSpreadsheet.
OctoSQL 0.13.0
https://github.com/cube2222/octosql
This is a command line tool. This portable executable was released in 2019 and supports Linux, Mac & Windows. For text files, it supports SON (in JSONLines format, one object per line), CSV, TSV, Parquet & Lines (reading a file line by line). Additional plugins can be installed to provide support for PostgreSQL or MySQL. MPL 2.0 License
The command line was simple and worked the first time I tried it:
octosql.exe "SELECT state, COUNT(*), AVG(amt) FROM `c:\data.csv` GROUP BY state" --output csv > c:\output.csv
DuckDB 1.4.1
This is a command line tool. This portable executable was released in 2019 and supports Linux, Mac & Windows. For text files, it supports CSV, Parquet, JSON & data lake formats. It can also connect to network and cloud storage. It uses parallel execution and can process larger-than-memory workloads. It has zero dependencies, so it can be installed in seconds and deployed in milliseconds. MIT License.
The command line was simple and worked the first time I tried it:
duckdb.exe --json -c "SELECT state, COUNT(*) AS count, AVG(amt) AS amt_avg FROM read_csv_auto('c:\data.csv', header=true) GROUP BY state ORDER BY state"
OpenCSV 5.12.0 Using CSVReader Class
https://opencsv.sourceforge.net/
Opencsv is an easy-to-use CSV (comma-separated values) parser library for Java. It was developed because all the CSV parsers at the time didn't have commercial-friendly licenses. Java 8 is currently the minimum supported version. It supports all the basic CSV-type things you're likely to want to do: Arbitrary numbers of values per line, ignoring commas in quoted elements, handling quoted entries with embedded carriage returns (i.e. entries that span multiple lines) and configurable separator and quote characters (or use sensible defaults).
OpenCSV 5.12.0: Using CSVReaderBuilder Class
https://opencsv.sourceforge.net/
CSVReaderBuilder was used in all the examples on the project's website, but it isn't required. I included it in case there was any performance difference.
Spreadsheet-CFML 3.12.0: csvToQuery() w/QoQ
https://github.com/cfsimplicity/spreadsheet-cfml/releases/tag/v3.12.0
This is the version that still works with ColdFusion 2016 (which I still support) and uses POI 5.2.5. This approach was slow as it had to read the CSV file into a query object and then a query-of-queries was performed and this extra step often took ~3 seconds using ColdFusion 2025.
Spreadsheet-CFML 5.2.0: ReadCSV
https://github.com/cfsimplicity/spreadsheet-cfml/releases/tag/v5.2.0
More information
- https://blog.simplicityweb.co.uk/138/reading-large-csv-files-with-cfml
- https://github.com/cfsimplicity/spreadsheet-cfml/wiki/readCsv
Spreadsheet-CFML 5.2.0: ReadCSV w/Closure
More information
ColdFusion 2025,0,04,331512 CSVRead
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-c-d/csvread.html
ColdFusion 2025,0,04,331512 CSVProcess
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-c-d/csvprocess.html