我正在用C#编写程序。一切都以一个静态的2D int数组为中心,该数组有400x6个元素。只有少数几个值会每分钟更新一次。但是,在每分钟的更新后,数十个函数将会计算“模式分数”,并且会对这些值进行数百万次的读取。计算速度越快,我可以在其中塞入的不同函数就越多。实际上,我可以允许这个计分过程耗费30秒时间。是否有一种方法可以将静态数组分配到堆栈上,如果可以的话,这会帮助加速吗?谢谢。
在C#中,您可以使用"stackalloc"在"unsafe模式"下分配堆栈上的数组,但是基准测试显示性能的提升有限,并且风险在于可能会达到1Mb的堆栈大小限制......这将导致StackOverflow(tm)错误!
以下是一篇关于此主题的好文章:http://blogs.microsoft.co.il/sasha/2013/10/17/on-stackalloc-performance-and-the-large-object-heap/
stackalloc
可以与 Span<T>
一起使用,而且不需要 "unsafe" 上下文。 - Youssef13