我正在尝试优化这段代码。这是简化版(不是实际代码)。
for i = 1:1000000
a(i).x = a(i).x+1;
a(i).y = a(i).y*2;
a(i).f = i:i+128;
end
我知道如果一个人的速度更快,我是否会尊重(i)。如下所示:
for i = 1:1000000
b = a(i);
b.x = b.x+1;
b.y = b.y*2;
b.f = i:i+128;
a(i) = b;
end
这里我将a(i)复制到b并最后复制到(i)。是否可以只定义指向(i)的指针?类似于C ++的东西。
答案 0 :(得分:1)
MATLAB的handle
数据类型与其他语言的引用类似,但我认为这不合适。
我建议的主要优化是使用大型数组的结构,而不是大量的结构。换句话说,您的代码可能看起来更像这样:
for i = ...
a.x(i) = a.x(i) + 1;
...
end
这种方法通常更快,内存效率更高。