2015-11-09 3 views
3

Я пишу программу на C#. Все сосредоточено вокруг статического 2D массива int, который составляет 400x6 элементов. Только несколько значений будут обновляться только раз в минуту. Но после обновлений каждой минуты десятки функций будут считывать значения миллионы раз, чтобы вычислить «оценки шаблонов». Чем быстрее вычисляются, тем больше функций я могу запихнуть там. Реально я могу позволить 30 секунд для этого процесса подсчета очков. Есть ли способ выделить статический массив в стек, и если да, то это поможет скорости? Благодарю.C# Выделить массив для стека?

+2

Там нет причин, почему это было бы никакой разницы. В любом случае массив будет кэшироваться. Тем не менее, было бы полезно избежать проверки границ (используя небезопасный код). – Luaan

ответ

4

Да, вы можете выделять массивы в стеке на C#, используя «stackalloc» в «небезопасном режиме», но тесты показывают ограниченное увеличение производительности, и риск состоит в том, что вы нажимаете ограничение размера стека 1Mb ... которое даст вы ... StackOverflow (tm)!

Вот хорошая статья на эту тему: http://blogs.microsoft.co.il/sasha/2013/10/17/on-stackalloc-performance-and-the-large-object-heap/

Смежные вопросы