En profilant mon application (C#, .NET 4), j'ai remarqué qu'une bibliothèque tierce que j'utilise appelle explicitement GC.Collect(). C'est très ennuyeux car cela a parfois un impact dramatique sur les performances de mon application, car certains appels à cette bibliothèque se terminent par des boucles énormes : le temps passé dans GC.Collect représente plus de 80% du temps d'exécution total.
Bien sûr, j'ai signalé ce comportement aux responsables de la bibliothèque (la librairie n'est pas open-source), mais pendant qu'ils travaillent sur une nouvelle version, j'aimerais optimiser mon application. Que puis-je faire ?
J'ai essayé de configurer la GC en définissant GCSettings.LatencyMode sur GCLatencyMode.LowLatency (uniquement pendant l'exécution des appels à la bibliothèque, bien sûr), mais en vain. Je préfère éviter de forker mon processus.
Des idées ?