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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Ce qui est énorme ! Une idée de ce qui peut se passer ? J'utilise le .Net Framework 4.

Merci