C#函数正常返回值VS out或ref参数
我在C#中有一个方法需要返回一个非常大的数组(或任何其他大数据结构).
使用ref或out参数而不是标准返回值是否有性能提升? I.E.使用中是否有任何表现或其他收益 void function(sometype input,ref largearray) 过度 largearray function(sometype input) 解决方法
32位x86处理器上用于传递各种类型参数的堆栈空间量:
>字节:4个字节 >字符串:4个字节 该行下面的参考类型,它们的大小将在64位处理器上加倍. 对于静态方法调用,最多4个字节的前2个参数将通过CPU寄存器传递,而不是堆栈.对于实例方法调用,只有一个参数将通过寄存器传递.其余的都在堆栈上传递. 64位处理器支持通过寄存器传递4个参数. 从列表中可以清楚地看出,你应该考虑通过ref传递参数的唯一时间是结构.对此的正常指导是在结构大于16个字节时这样做.猜测结构的运行时大小并不总是容易的,通常最多4个字段是准确的.如果这些字段是double,long或decimal,则减少.因此,本指南通常建议将您的结构转换为类,正是出于这个原因. 还要注意,没有节省将参数作为字节或短的故意传递,int是32位处理器满意的类型.对于当前可用的64位处理器也是如此. 方法返回值,问题的真实主题几乎总是在CPU寄存器中返回.大多数类型适合放在eax或edx:eax寄存器中,FPU寄存器用于浮点值.唯一的例外是大结构和十进制,它们太大而不适合寄存器.它们通过在堆栈上为返回值保留空间并将4字节指针传递给该空间作为方法的参数来调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |