Pour ceux que ca intéresse je viens de faire un test.. Il parait qu'avec .NET l'allocation dynamique sur le tas est quasiment aussi rapide que l'allocation sur la pile.. Pas si sûr..
namespace Test
{
class App
{
[ System.Runtime.InteropServices.DllImport( "kernel32.dll" ) ]
[ System.Security.SuppressUnmanagedCodeSecurity ]
private static extern int QueryPerformanceCounter( ref long count );
private static long ticks = 0;
private static long Ticks
{
get
{
QueryPerformanceCounter( ref ticks );
return ticks;
}
}
private unsafe static void Stack( )
{
byte* p = stackalloc byte[ 256 ]; // Attention à StackOverflowException.
}
private static void Heap( )
{
byte[ ] tab = new byte[ 256 ];
}
private static void Main( )
{
long ticks = 0;
long stack = 0;
long heap = 0;
Stack( ); // JIT
Heap( ); // JIT
ticks = Ticks;
for ( int i = 0; i < 1000; i++ )
Stack( );
stack = Ticks - ticks;
ticks = Ticks;
for ( int i = 0; i < 1000; i++ )
Heap( );
heap = Ticks - ticks;
System.Windows.Forms.MessageBox.Show( "Stack\t: " + stack + "\nHeap\t: " + heap );
}
}
}