C#将数组分配给堆栈

本文关键字:堆栈 分配 数组 | 更新日期: 2023-09-27 18:21:09

我正在用C#编写一个程序。一切都围绕着一个400x6元素的静态2D int数组。只有少数值每分钟更新一次。但在每分钟的更新之后,数十个函数将读取这些值数百万次,以计算"模式分数"。计算速度越快,我就可以在里面塞进更多不同的函数。实际上,我可以留出30秒的时间来完成这个评分过程。有没有办法将静态数组分配给堆栈?如果有,这对速度有帮助吗?谢谢

C#将数组分配给堆栈

是的,您可以在"不安全模式"下使用"stackalloc"在C#中的堆栈上分配数组,但基准测试显示性能增益有限,风险是达到1Mb堆栈大小限制。。。它将为您提供…StackOverflow(tm)!

这是一篇关于这个主题的好文章:http://blogs.microsoft.co.il/sasha/2013/10/17/on-stackalloc-performance-and-the-large-object-heap/

您可以使用"stackalloc"直接在堆栈上分配数组。

关于以下内容的一些文档:https://msdn.microsoft.com/en-us/library/aa664785(v=vs.71).aspx

您也可以使用Hamming权重的实现,如下所述:如何在堆栈上分配阵列以提高性能?