我正在开发一个c#programm,但我的问题或多或少是交叉语言。
假设一个班级
public class Class1
{
SlimMath.Vector3 location;
}
此向量用于保存位置,即每个刻度线直接从数组读取一次。 现在我有两种不同的方式来“覆盖”这个载体。
void overwrite()
{
location = new SlimMath.Vector3(cameraData.loc[0], cameraData.loc[1], cameraData.loc[2]);
}
和(假设矢量位置也是初始化的):
void overwrite()
{
location.X = cameraData.loc[0];
location.Y = cameraData.loc[1];
location.Z = cameraData.loc[2];
}
因此,在互联网上搜索我自己之后,我的问题是:每次我读取输入时,是否创建new SlimMath.Vector3
或覆盖已存在的那个是否重要?由于我经常阅读,我想知道,如果涉及到性能,哪种方法更可行。
提前感谢您对此主题的任何帮助。
答案 0 :(得分:2)
更易读的方法是使用不可变对象。如果您可以假设对象的属性不会因为您当前未查看的其他代码而无法更改,则更容易理解您在阅读代码时会发生什么。
但是,有时确实会导致创建大量对象, 有时会降低应用程序的性能。
因为" can"和"有时"上面,通常自己假设你的代码的这个特定部分肯定会出现性能问题是不好的。
所以,通常你应该首先编写可读和合理的代码,然后在你指出一个特定的性能问题(最好使用分析器执行时间和内存消耗)之后 你可以申请一些" hacks"在这里和那里解决它。