关于在C#中优化代码以提高速度的几个问题



如果我有一个被多次调用的方法,例如:

public int CalledManyTimes(int a, int b)
{
     MyObject myObject = new myObject();
     int c = a + b + myObject.GetSomeValue();
     return c;
}

MyObject myObject;放在方法之外,从而只声明一次,是否会提高性能,或者编译器会自动这样做?

结构究竟是如何传递的?

我将一个Point结构传递给一个方法(Point只包含int x,int y),而该方法正在更改值并返回new Point(newX, newY);。更改传递给该方法的Point并返回该值更好吗?或者我可以创建一个Point point;在我第一个问题中提出的方法之外,并使用它?

myObject似乎没有可用状态;所以:使一个static方法——问题得到解决;无分配,无虚拟调用:

public int CalledManyTimes(int a, int b)
{
     int c = a + b + MyObject.GetSomeValue(); // static method
     return c;
}

其他任何东西:简介。

查看您的具体问题:

将MyObject放入MyObject是否会提高性能;在方法之外,所以它只声明一次,或者编译器会自动这样做吗?

零次初始化甚至更快。然而,如果中有某个状态在问题中不明显,那么是的,我希望重用单个实例会更有效——然而,这会改变语义(在原始情况下,状态在迭代之间不共享)。

结构究竟是如何传递的?

默认情况下,只要你朝它们的方向看一眼,它们就会被复制到堆栈上。您可以使用ref来避免复制,如果结构严重超重或需要更新(理想情况下使用重新分配,而不是可变),这可能会很有用。

最新更新