No meu aplicativo net 8 eu uso Span/stackalloc para alocar rapidamente algumas estruturas de dados. Eu uso o seguinte padrão
float[] myDataRent = null;
Span<float> myData = numberToAllocate <= maxStackAllocSize ? stackalloc float[numberToAllocate] : (myDataRentRent = ArrayPool<float>.Shared.Rent(numberToAllocate));
...
if( myDataRent != null )
ArrayPool<float>.Shared.Return( myDataRent );
Minhas medições de desempenho mostram um ganho de desempenho muito alto do stackalloc, então eu preferiria usar a alocação de pilha na medida do possível. Portanto, preciso saber o valor máximo seguro para maxStackAllocSize.
Então, qual é o tamanho da pilha padrão para o processo net core de 64 bits? De acordo com o que li deveria ser 4 mb (então considero 2 mb seguro para usar no stackalloc), mas a verificação GetCurrentThreadStackLimits me dá algo próximo de 1,5 mb e não um número muito redondo. Não sei se posso confiar nisso.