C# 操作对象数组与操作包含参数数组的单个对象?

C# 操作对象数组与操作包含参数数组的单个对象?,c#,performance,unity3d,path-finding,C#,Performance,Unity3d,Path Finding,我正在考虑制作一个路径查找系统,每个节点必须包含位置数据、与之相关的移动成本等等。哪种方法更有效,因为我的目标平台是手机 哪一个在性能方面更好 这: 公共类测试{ int x; 浮动y; 字符串z; } . . . 试验[]试验=新试验[100]; 对于(int i=0;i

我正在考虑制作一个路径查找系统,每个节点必须包含位置数据、与之相关的移动成本等等。哪种方法更有效,因为我的目标平台是手机

哪一个在性能方面更好

这:

公共类测试{
int x;
浮动y;
字符串z;
}
.
.
.
试验[]试验=新试验[100];
对于(int i=0;i<100;++i){
试验[i].x=0;
试验[i],y=0.5f;
测试[i].z=“你好:”;
}
或者这个:

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:";
}
公共类测试{
int[]x;
浮动[]y;
字符串[]z;
}
.
.
.
测试=新测试;
测试x=新的整数[100];
试验y=新浮子[100];
test.z=新字符串[100];
对于(int i=0;i<100;++i){
测试x[i]=0;
试验y[i]=0.5f;
tests.z[i]=“你好:”;
}

使用struct not class,它会给你带来性能,如果你想使用class,那么第二个会比第一个有更好的性能,我想是因为堆中有1个object not 100 object

使用struct not class,它会给你带来性能,如果您想使用class than second比first具有更高的性能,我认为因为堆中有1个对象而不是100个对象,所以在您的示例中,性能差异不是很重要,但是第一个变体在代码可读性和灵活性方面更好


您可以使用
struct
而不是
class
来避免额外的解引用操作,这可能会提高性能。

在您的示例中,性能差异不是很重要,但第一种变体在代码可读性和灵活性方面更好


您可以使用
struct
而不是
class
来避免额外的解引用操作,这可能会提高性能。

您尝试过分析它吗?使用第一个版本。此外,如果您追求原始性能,您应该像这样在循环中缓存索引器调用:
var test=tests[i]
然后使用此变量访问字段。是否尝试对其进行分析?请使用第一个版本。此外,如果您追求原始性能,您应该像这样在循环中缓存索引器调用:
var test=tests[i]
然后使用此变量访问字段。
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:";
}