Coût d'appel de fonction très très long la 1ere fois
Bonjour,
Je suis en train d'instrumenter des parties critiques de mon code et j'ai un problème de performance que je n'arrive pas à expliquer. J'ai une grosse fonction (+500 lignes) dont le coût d'appel est systématiquement d'environ 2ms la 1ere fois que je l'appelle, à chaque exécution du programme. Pour clarifier, ce n'est pas la fonction elle-même qui prend du temps (elle est déjà très optimisée), juste son appel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| long startTimestamp;
long endTimestamp;
public static void Init()
{
startTimestamp = Stopwatch.GetTimestamp();
GrosseFonction();
float ms = 1000f * (endTimestamp - startTimestamp) / (float)Stopwatch.Frequency;
System.Console.WriteLine("Coût d'appel {0}ms", ms);
}
public static void GrosseFonction()
{
endTimestamp = Stopwatch.GetTimestamp();
// plein de code qui ne fait aucune allocation et dont le coût est inférieur à 50µs
} |
Ce qui affiche :
Code:
Coût d'appel 1.907ms
Ce qui est énorme ! Une idée de ce qui peut se passer ? J'utilise le .Net Framework 4.
Merci