Utiliser string.ToLower() c'est mal !
J'avoue que le titre de mon message est un peu racoleur :)
Nous allons cependant étudier le bout de code suivant :
if (val.ToLower() == "unevaleur")
{
// faire qqch
}
Ce type de test est présent dans de nombreux projets...
Rappelons juste que le Framework .Net fournit une méthode spécifique pour effectuer des comparaisons de "string".
On préférera donc écrire :
if (val.Equals("UneValeur", StringComparison.InvariantCultureIgnoreCase))
{
// faire qqch
}
Pourquoi ? L'une des raisons est les performances !
Voici le résultat d'une application testant les performances de chaque méthode :
La méthode "string.Equals()" est juste 40 fois plus rapide que la méthode "xxx.ToLower() == yyy" !
L'utilisation de l'objet "StringBuilder" pour la concaténation de chaînes de caractères est entrée dans les mœurs, il faut faire pareil pour la comparaison des chaînes de caractères !
Note :
Pour plus d'information sur l'application console que j'ai utilisé pour tester les perfs, je vous invite a regarde le blog d'Antoine.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :