Performance: readTable versus xlsread

59 visualizzazioni (ultimi 30 giorni)
fsgeek
fsgeek il 27 Mar 2021
Commentato: Jeremy Hughes il 7 Lug 2022
Dear Community,
I am reading the contents of an Excel Workbook (.xlsx) file. It's a pretty large, but not crazy file (approximately 26k rows-by-24 columns; 3MB). The data is a mixture of a text header (row 1) and the rest is a mixture of numbers and strings.
Until now, I've been using xlsread to process this file. According to the MATLAB documentation, xlsread is not recommended and I should consider readtable or readcell instead:
"The readtable, readmatrix, and readcell functions have these advantages over the xlsread function: Better cross-platform support and performance..."
In MATLAB 2019a for my Excel file, xlsread takes about 1.2 seconds to get the output; readtable takes about 12 seconds; readcell takes about 42 seconds.
It appears to me that xlsread is superior to the other two methods when it comes to speed. Hence my question: What is meant in the documentation by "Better cross-platform support and performance"? What is this performance measured relative to? I appreciate that readtable and readcell have various other advantages, so I understand their use cases. I'm wondering if there's anything obvious that I'm missing which could improve the performance?
I'm calling the methods in a very simple fashion:
[~, ~, csvData] = xlsread(filename);
csvData = readtable(filename);
csvData = readcell(filename);
Thanks,
Louis
  1 Commento
Jeremy Hughes
Jeremy Hughes il 7 Lug 2022
Interested if you've tried this is a recent MATLAB release. Or if you have a file that is running slowly, attach it. Then someone might be able to provide a better answer.

Accedi per commentare.

Risposte (1)

Abdolkarim Mohammadi
Abdolkarim Mohammadi il 28 Mar 2021
Modificato: Abdolkarim Mohammadi il 28 Mar 2021
I don't know about the exact thing you mentioned, but I have experienced that when reading many matrixes from Excel (hence many calls to xlsread() or readmatrix()), the file with readmatrix() runs significantly faster than the same file but with xlsread().
  1 Commento
fsgeek
fsgeek il 29 Mar 2021
That sounds promising. Unfortunately, I can't use readmatrix because my data contains non-numeric cells.

Accedi per commentare.

Prodotti


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by