Does anyone know how the MatLab table 'RowKey' mechanism is implemented ?
I would expect something like this to be done using a tree structure internally – which then indirects into the backing data structure – so that sorting would be maintaned efficiently as the table grows – but I am seeing some strange behaviour which makes me question this.
If I create a tables – approx 250,000 rows – and use tbl.Properties.RowKeys to set unique keys – and then do a filter/sort operation on that table, like this:
tFinal1 = tInitial(MyRowKeys,:)
this takes a very long time, but if instead I do:
[~, idx] = ismember(MyRowKeys, tInitial.Properties.RowNames);
tFinal2 = tInitial(idx,:)
this is several orders of magnitude faster – so much so that the first version is unworkable.
It looks to me like one is o(n.log(n)) and the other is o(n squared) – or there is a very different element cmp operation.
Is there any documentation on how this works internally ?
A
Best Answer