我正在用C#编写程序。一切都围绕一个静态的2D int数组,它是400x6元素。只需几个值就会每分钟更新一次。但是在每分钟更新之后,许多函数会读取数百万次的值来计算“模式分数”。计算越快,我可以在那里填充的功能就越明显。实际上我可以让这个评分过程持续30秒。有没有办法将静态数组分配给堆栈,如果是这样,这有助于提高速度吗?感谢。
答案 0 :(得分:4)
是的,您可以在“不安全模式”下使用“stackalloc”在C#中的堆栈上分配数组,但基准测试显示性能增益有限,而且风险是您达到1Mb堆栈大小限制...这将为您提供a ... StackOverflow(tm)!
这是一篇关于这个主题的好文章: http://blogs.microsoft.co.il/sasha/2013/10/17/on-stackalloc-performance-and-the-large-object-heap/
答案 1 :(得分:0)
您可以使用“stackalloc”直接在堆栈上分配数组。
有关以下内容的文档: https://msdn.microsoft.com/en-us/library/aa664785(v=vs.71).aspx
您还可以使用汉明重量的实现,如下所述: How to allocate arrays on the stack for performance gains?