这是C#.NET旁边的一个非常普遍的问题。一些有关性能优化的技术总是尽可能地尝试在堆栈上分配对象,而不是在堆上分配对象。使用stackalloc
而不是normal Array
,或者使用struct type作为局部变量而不是class。我的问题是为什么在堆栈上分配对象可以提高性能?在我看来,内存就是内存,因此分配对象的平均时间是相同的。仅仅是因为避免垃圾回收吗?
当讨论涉及非托管代码时,垃圾收集器确实是一个重要因素,因为堆栈分配(使用stackalloc)对它的要求会更少。请注意,在堆的情况下,垃圾回收器将需要对数组进行重新分配。另一方面,对于托管代码,分配是默认设置的(您不能选择方式)-引用类型在堆中分配,而值类型在堆栈中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句