Joe*_*Joe 3 .net c# optimization class-design
说我有一个结构:
struct MyStruct
{
public int X
public int Y
}
Run Code Online (Sandbox Code Playgroud)
并且在某些类中的方法在其他地方多次迭代:
public bool MyMethod( MyStruct myStruct )
{
return ...
}
Run Code Online (Sandbox Code Playgroud)
是否将MyMethod签名更改为以下可接受的优化?
public bool MyMethod( ref MyStruct myStruct )
Run Code Online (Sandbox Code Playgroud)
如果是这样,它真的有多大的优势?如果没有,那么使用ref
这种方式,结构需要多少字段以获得足够大的优势?
在32位系统上,您将进行更改以推送8个字节的数据而不是4个字节.在64位系统上推送的数据量没有变化.您还要向编译器/ JITter添加一个要求结构必须存在于内存中的要求,因为您将获取它的地址,这可能会否定其他优化.
我怀疑这会显示你的程序性能有任何提升.首先介绍一下,看看MyMethod是否是您程序中的瓶颈.
然后,假设MyMethod中没有其他优化机会,请将更改传递给ref,然后再次进行配置以查看是否有任何改进.