salut,
le titre reflète la conclusion que j'ai tiré ce matin apres que je suis tombé sur cette méthode 'equals()' et fait quelques petits tests que voici quelques unes d'elles:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PS II> $a = '' PS II> $b = [string]::empty PS II> $a -eq $b True PS II> $a.Equals($b) False
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 PS II> $a = 5 PS II> $b = '5' PS II> $a -eq $b True PS II> $b -eq $a True PS II> $a.Equals($b) False PS II> $b.Equals($a) Falsed'après ces tests, l'opérateur '-eq' fait une conversion automatique de type si necessaire, tandis que la méthode equals() ne fait aucune conversion, elle compare la valeur et le type à la fois...ceci explique la lenteur de la boucle '1'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PS II> [int32]$a = 1 PS II> [int64]$b = 1 PS II> $a -eq $b True PS II> $a.Equals($b) False
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 # boucle 1 PS II> measure-command {for($i=0; $i -lt 1000000; $i++) {$i.equals($i)}} ~ 19671,6705 ms # bouclle 2 PS II> measure-command {for($i=0; $i -lt 1000000; $i++) {$i -eq $i}} ~ 6741,3699 ms
mais, si on on mets des guillemets à la variable "$i" l'opérateur '-eq' va d'abord convertir "$i" en [int] puis va comparer les deux valeurs, ceci explique sa lenteur dans ce deuxieme test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PS II> measure-command {for($i=0; $i -lt 1000000; $i++) {"$i" -eq $i}} ~ 18443,051 ms
Partager