Array performance in class attributs
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Franck AUBINEAU
il 5 Feb 2024
Commentato: Franck AUBINEAU
il 5 Feb 2024
Here is an (short) example of the observed problem. It is not the exact code but it is the exact problem :-)
% Class
classdef MaClasse < handle
properties (Access = public)
tabVal = [];
end
end
% Code, declaration, allocation
pTest = MaClasse();
pTest.tabVal = zeros(200,1000);
tmp = zeros(200,1000);
% Problem
pTest.tabVal(10,:) = ones(1,1000); %
tmp(10,:) = ones(1,1000); % -> twice even more faster than the line above
0 Commenti
Risposta accettata
Shivam
il 5 Feb 2024
Hi Franck,
Based on the code you have shared, it seems you want to know the discrepancy in execution time between assigning a matrix of ones to a property of a custom class object and assigning it directly to a standard array.
It is important to know that the observed difference in performance comes from MATLAB's additional processing when dealing with class properties. Whenever you alter a property of a handle class, MATLAB has to conduct extra operations, including managing object references and maintaining the integrity and encapsulation of the data.
And, with a conventional matrix such as tmp, MATLAB can interact with and alter the memory directly, bypassing the complexities introduced by object-oriented features.
I hope it helps in understanding the performance difference between the two lines.
Thanks
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements 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!