--This creates a table of tables A = Matrix.Random({-2,2},{10000,10000}) setmetatable(A, MatrixMeta) TimeStart("Table of Tables") B = Matrix.Transpose(A) B = Matrix.Conjugate(B) B = Matrix.ConjugateTranspose(B) B = B - A print(B[1][1]) TimeEnd("Table of Tables") AUData = Matrix.ToUserdata(A) --A is, after this point, no longer needed. A = nil B = nil collectgarbage() TimeStart("Userdata") B = Matrix.Transpose(AUData) B = Matrix.Conjugate(B) B = Matrix.ConjugateTranspose(B) B = B - AUData --In case we want to access the first element. B = Matrix.ToTable(B) print(B[1][1]) TimeEnd("Userdata") TimePrint()