栈上分配大对象vs堆上分配大对象
不考虑其他因素, 栈上分配的对象带来的性能开销比在堆上分配要小。
但在C#中会做一系列初始化操作,比如一个int数组的值都会被赋值为0。因此在C#中,堆上分配还是栈上分配,性能的差异并不明显。大概是2倍左右。其中很大原因是会有很多push 0操作(数组元素赋值为0)。
如果使用dllimport C++的代码,此时栈上分配的效率对比堆上分配 性能差异在100倍左右
不考虑其他因素, 栈上分配的对象带来的性能开销比在堆上分配要小。
但在C#中会做一系列初始化操作,比如一个int数组的值都会被赋值为0。因此在C#中,堆上分配还是栈上分配,性能的差异并不明显。大概是2倍左右。其中很大原因是会有很多push 0操作(数组元素赋值为0)。
如果使用dllimport C++的代码,此时栈上分配的效率对比堆上分配 性能差异在100倍左右