Optimiser les performance en choissant bien les méthode du framework
Suite au post que j'ai vu hier (Utiliser string.ToLower() c'est mal !), je me suis amusé a compararer quelques méthode du framework afin de sélectionner les plus rapide et les mettre dans mon code.
Voici mes premiers résultats :
Code:
if (val.ToUpper().Contains("une".ToUpper()) == false)
VS
Code:
if (val.IndexOf("une",0,StringComparison.InvariantCultureIgnoreCase) == -1)
http://perso.numericable.fr/sdelestr...ppez_net/1.jpg
VS
Code:
csb.Append("test");
(csb étant un StringBuilder et cs une simple string. La boucle est exécuter 3000 fois)
http://perso.numericable.fr/sdelestr...ppez_net/2.jpg
VS
Code:
if (string.IsNullOrEmpty(val))
http://perso.numericable.fr/sdelestr...ppez_net/3.jpg
Code:
string a = "toto " + val + " toto";
VS
Code:
string a = string.Format("toto {0} toto", val);
http://perso.numericable.fr/sdelestr...ppez_net/4.jpg
Pour le coup la contaténation est plus rapide que le string.Format, pas très logique je trouve. A creuser...
Pour Neptune et Nip
Code:
if ((val == null) || (val == ""))
VS
Code:
if (string.IsNullOrEmpty(val))
http://perso.numericable.fr/sdelestr...ppez_net/5.jpg
Code:
if ((val == null) || (val.Length == 0))
VS
Code:
if (string.IsNullOrEmpty(val))
http://perso.numericable.fr/sdelestr...ppez_net/6.jpg
testé 1 000 fois et 3 000 000 de fois à chaque fois sinon le vainqueur était toujours différent
Plus de détail ici http://dotnetperls.com/Content/IsNul...y-Samples.aspx
Code:
1 2 3 4 5 6 7 8 9 10
|
DateTime dtDateTime;
try
{
dtDateTime = DateTime.Parse(val); //val étant une string contenant "01/01/2008"
}
catch
{
dtDateTime = DateTime.MinValue;
} |
VS
Code:
1 2 3
|
DateTime dtDateTime;
DateTime.TryParse(val, out dtDateTime); |
http://perso.numericable.fr/sdelestr...ppez_net/7.jpg
Code:
1 2 3 4 5 6 7 8 9
| DateTime dtDateTime;
try
{
dtDateTime = DateTime.Parse(val); //val étant une string contenant "01/01/a008"
}
catch
{
dtDateTime = DateTime.MinValue;
} |
VS
Code:
1 2 3
|
DateTime dtDateTime;
DateTime.TryParse(val, out dtDateTime); |
http://perso.numericable.fr/sdelestr...ppez_net/8.jpg
Et vous, vous avez aussi des méthode à préconiser par rapport à d'autres ?