gSt*_*ion 4 c# performance parameter-passing
传递一个类/结构与传递几个参数
我想知道性能方面的考虑因素.
它会更好的性能代价通入一个方法调用类或一个结构(其?)保持两个int参数和一个对象引用,或倒不如通过这三个作为三个参数?
注意:我在Unity3D平台上进行开发,因此有些东西可能与经典的.NET不同
如果你传递了一个class
,那么你需要做的第一件事是创建一个对象,以后需要进行垃圾回收.通常不是问题,但是在某些Unity目标平台上,如果您正在进行此操作,这可能是不受欢迎的.
如果你struct
正常传递,那么它需要复制结构.如果它足够大,你可以提出有关封装的问题(即代表多个参数),那么它可能非常重要,并且可能一直很难复制,特别是如果传递几层.
传递单个参数是众所周知的,不应该引起很大的问题.4.0中的可选参数可以使添加更多参数减少痛苦,但它们仍然被传递(仅使用其默认值).
一个有趣的选择团结是传递一个struct
由参,因为这不复制的内容(它只是传递给你创造的价值的参考,一般在栈中),并且不要求任何垃圾收集,即
var args = new SomeArgs(123, "abc", 23.4F, false); // <=== a struct
SomeMethod(ref args);
Run Code Online (Sandbox Code Playgroud)
但是,在大多数有用的情况下,我看不出这会让你获益匪浅
SomeMethod(123, "abc", 23.4F, false);
Run Code Online (Sandbox Code Playgroud)
除非您将参数传递给几层 - 在这种情况下,它具有不需要任何复制的优点.但请注意:调用堆栈中的层之间的值不再是独立的(常规参数,未传递ref
,与方法隔离).
我认为至少要描述一些需要考虑的事情,但我没有给你一个确定的答案.如果你想要更科学的东西,你可能需要测量.
归档时间: |
|
查看次数: |
3130 次 |
最近记录: |