gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:49:24 24 4
gpt4 key购买 nike

如果我有一个方法被调用了很多次,比如:

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;
}

对于其他任何东西:个人资料。

查看您的具体问题:

Is there a performance boost by putting MyObject myObject; outside of the method, so it's only declared once, or will the compiler do this automatically?

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

How exactly are structs passed around?

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

关于c# - 关于在 C# 中优化代码以提高速度的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com