Je dois allouer de très grands tableaux de structures simples (1 Go de RAM). Après quelques allocations/désallocations, la mémoire devient fragmentée et une exception OutOfMemory est levée.Tableau groupé en C#
Ceci est inférieur à 32 bits. Je préfère ne pas utiliser 64 bits en raison de la pénalité de performance que je reçois - la même application est 30% plus lente en mode 64 bits. Avez-vous connaissance de certaines implémentations de baies compatibles IList qui allouent de la mémoire en morceaux et pas tous en même temps? Cela permettrait d'éviter mon problème de fragmentation de la mémoire.
Odd, ceci est vraiment la mauvaise question. Il aurait dû demander "pourquoi est par le programme 64 bits 30% plus lent?" Votre processus 32 bits va être un * lot * plus lent aussi après avoir découpé les tableaux. –
A l'origine, l'application était en 64 bits, mais après avoir lu certains articles qui suggèrent que le JIT 64 bits n'est pas si bon à l'optimisation du code que celui de 32 bits (http: // stackoverflow.com/questions/14432/64bit-net-performance-tuning), je l'ai converti en 32 bits et j'ai trouvé que c'était vrai. Même si je perds de la vitesse ici, il démarrera toujours plus vite que la version 64 bits - j'utilise IronPython + C# + C++/CLI, et le démarrage de la version 64 bits prend 10 secondes de plus (à cause d'IronPython) – Meh