对对象数组进行操作还是对包含参数数组的单个对象进行操作?
Operating on an Array of objects versus operating on a single object containing arrays of parameters?
我正在考虑制作一个寻路系统,每个节点都必须包含位置数据、与之相关的移动成本等。哪种方法性能更好,因为我的目标平台是移动设备。
哪个在性能方面更好?
这个:
public Class Test{
int x;
float y;
string z;
}
.
.
.
Test[] tests = new Test[100];
for(int i=0; i< 100; ++i){
tests[i].x = 0;
tests[i].y = 0.5f;
tests[i].z = "Hello:";
}
或者这样:
public Class Test{
int[] x;
float[] y;
string[] z;
}
.
.
.
Test tests = new Test;
test.x = new int[100];
test.y = new float[100];
test.z = new string[100];
for(int i=0; i< 100; ++i){
tests.x[i] = 0;
tests.y[i] = 0.5f;
tests.z[i] = "Hello:";
}
使用 struct 而不是 class 并且它会给你性能,如果你想使用 class 比第二个比第一个有更好的性能我认为是因为堆中有 1 个对象而不是 100 个对象
在您的示例中,性能差异并不重要,但第一个变体在代码可读性和灵活性方面更好。
您可以使用 struct
而不是 class
来避免额外的取消引用操作,这可能会提高性能。
我正在考虑制作一个寻路系统,每个节点都必须包含位置数据、与之相关的移动成本等。哪种方法性能更好,因为我的目标平台是移动设备。
哪个在性能方面更好?
这个:
public Class Test{
int x;
float y;
string z;
}
.
.
.
Test[] tests = new Test[100];
for(int i=0; i< 100; ++i){
tests[i].x = 0;
tests[i].y = 0.5f;
tests[i].z = "Hello:";
}
或者这样:
public Class Test{
int[] x;
float[] y;
string[] z;
}
.
.
.
Test tests = new Test;
test.x = new int[100];
test.y = new float[100];
test.z = new string[100];
for(int i=0; i< 100; ++i){
tests.x[i] = 0;
tests.y[i] = 0.5f;
tests.z[i] = "Hello:";
}
使用 struct 而不是 class 并且它会给你性能,如果你想使用 class 比第二个比第一个有更好的性能我认为是因为堆中有 1 个对象而不是 100 个对象
在您的示例中,性能差异并不重要,但第一个变体在代码可读性和灵活性方面更好。
您可以使用 struct
而不是 class
来避免额外的取消引用操作,这可能会提高性能。