Performance: readTable versus xlsread

113 visualizaciones (últimos 30 días)
fsgeek
fsgeek el 27 de Mzo. de 2021
Comentada: Jeremy Hughes el 7 de Jul. de 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 comentario
Jeremy Hughes
Jeremy Hughes el 7 de Jul. de 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.

Iniciar sesión para comentar.

Respuestas (1)

Abdolkarim Mohammadi
Abdolkarim Mohammadi el 28 de Mzo. de 2021
Editada: Abdolkarim Mohammadi el 28 de Mzo. de 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 comentario
fsgeek
fsgeek el 29 de Mzo. de 2021
That sounds promising. Unfortunately, I can't use readmatrix because my data contains non-numeric cells.

Iniciar sesión para comentar.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by