Existe-t-il une raison pour laquelle des opérations mathématiques identiques prennent beaucoup plus de temps dans une application Silverlight que dans une autre?silverlight math performance question
Par exemple, j'ai un code qui prend une liste de points et les transforme (échelles et les traduit) et renseigne une autre liste de points. Il est important de garder les points d'origine intacts, d'où la deuxième liste.
Voici le code correspondant (échelle est un double et d'origine est un point):
public Point transformPoint(Point point) {
// scale, then translate the x
point.X = (point.X - origin.X) * scale;
// scale, then translate the y
point.Y = (point.Y - origin.Y) * scale;
// return the point
return point;
}
Voilà comment je fais la boucle et le calendrier, au cas où il est important:
DateTime startTime = DateTime.Now;
foreach (Point point in rawPoints) transformedPoints.Add(transformPoint(point));
Debug.Print("ASPX milliseconds: {0}", (DateTime.Now - startTime).Milliseconds);
Sur une série de 14356 points (ne demandez pas, il est modélisé un nombre réel dans l'application de bureau), la répartition est la suivante:
Silverlight app # 1: 46 ms
Silverlight app n ° 2: 859 ms
La première application est une application par ailleurs vide qui effectue la boucle dans le constructeur MainPage. Le second fait la boucle dans une méthode dans une autre classe, et la méthode est appelée au cours d'un gestionnaire d'événements dans le thread graphique, je pense. Mais cela devrait-il être important, étant donné que des opérations identiques se déroulent dans la boucle elle-même?
Il peut-être quelque chose d'énorme qui me manque dans la façon dont fonctionne le filetage ou quelque chose, mais cet écart n'a pas de sens pour moi du tout.
Veuillez utiliser System.Diagnostics.StopWatch pour référencer votre code et afficher les résultats. L'utilisation de DataTime est très imprécise. – ParmesanCodice
Aussi - et c'est peut-être évident - assurez-vous de mesurer la version Release dans les deux cas. –