2011-08-31 5 views
0

Quelqu'un peut-il me faire la lumière là-dessus? Quelle serait la meilleure pour la performanceQuel est le meilleur pour la performance

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     string stock = row["stpt_Stock"].ToString(); 
     textbox.text = stock; 
    } 

ou

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     textbox.text = row["stpt_Stock"].ToString(); 
    } 

Y aurait-il beaucoup de différence, même si le datatable est énorme. Je veux juste savoir s'il est préférable pour la performance si les données sont transmises directement.

Répondre

4

Il n'y aura pas de différence discernable dans l'efficacité - je doute qu'il est encore mesurable, si elle existe du tout. Le fait que vous affectez à une variable locale sera fondamentalement hors de propos. La valeur de l'expression row["stpt_Stock"].ToString() finira dans la pile de toute façon. La seule différence est de savoir si cet emplacement de pile a un nom ou non.

Dans le débogueur, il peut faire une différence minuscule mais juste mesurable, car il peut avoir des implications supplémentaires - mais certainement pas assez pour s'inquiéter.

Je pense que je serais plus préoccupé par le fait que vous attribuez de manière répétée des valeurs à la même propriété textBox.Text - seule la dernière sera réellement pertinente. Vous seriez mieux de simplement aller chercher le dernier ...

+0

Merci Jon, c'est génial. Je n'utilisais que la zone de texte comme exemple, mais merci –

1

Aucune différence. Probablement exactement le même code après la compilation.

1

Aucune différence.
Ce qui suit sera plus rapide que les deux:

textbox.text = prodStockLevels.Rows.Last()["stpt_Stock"].ToString(); 
+0

_might_ être plus rapide que les deux. L'optimiseur peut voir que la valeur affectée n'est jamais utilisée et ignorer complètement l'affectation. Ne pas dire que c'est mais qu'il pourrait –

+0

@Rune: Un optimiseur qui élimine les affectations à une propriété va faire un gâchis. Et la propriété Text déclenche une certaine logique et repeint. –

+0

Si en effet il y a des effets secondaires alors l'optimiseur ne pourra pas supprimer les affectations mais alors votre code ne fonctionnera pas non plus puisque c'est exactement ce que vous venez de faire pour optimiser de toute façon –

Questions connexes