Preallocation not helping with speed; actxserver
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Robert Dylans
      
 il 1 Set 2015
  
    
    
    
    
    Commentato: Robert Dylans
      
 il 2 Set 2015
            I have a folder of 500 separate Excel files (.csv to be specific). I'm reading a specific data range from them. My main problem is that it's taking longer than I would expect. Originally with xlsread I was taking ~200 seconds. I've recently learned of using actxserver and have cut down to ~50 seconds. I'm trying to preallocate memory for it, but I've noticed that the duration is exactly the same whether I do this or not.
z=zeros(3452,1);
for i=1:500
    high{i}=z;
end
tic
folder='F:\Program Files\Historical\daily';
files=dir(fullfile(folder,'*.csv'));
e=actxserver('Excel.Application');
for k=1:numel(files)
    waitbar(k/numel(files),progress);
    ExcelWorkbook=e.workbooks.Open(fullfile(folder,files(k).name));
    range=ExcelWorkbook.ActiveSheet.Range('E1:E3452');
    high{k}=range.Value;
end
toc
Am I formatting the preallocation wrong? Or am I missing something else? Or is my computer just slow?
Thanks for any help.
0 Commenti
Risposta accettata
  Image Analyst
      
      
 il 1 Set 2015
        They're simple csv files, not complicated workbooks. Have you tried simply using csvread()? Maybe that will be faster since there's no overhead of trying to launch and shutdown Excel.
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Spreadsheets in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!