Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

IIf 4 fois plus lent que If...Then...Else

1 view
Skip to first unread message

snack

unread,
Jan 25, 2002, 3:20:59 AM1/25/02
to
Il me semblait avoir lu que iif était long à exécuter.
Je viens de faire un petit test...
et en effet, iif est 4 fois plus lent que If...Then...Else (chez moi 2
millionièmes de seconde en plus à chaque passage dans la boucle).
C'est peu, mais quand on veut optimiser une longue boucle...

Sub Test_IIf()
Dim Str As String
Dim n As Long

For n = 1 To 1000000
Str = IIf((1 And 1), "False", "True")
Next
End Sub

Sub Test_If_Then()
Dim Str As String
Dim n As Long

For n = 1 To 1000000
If (1 And 1) Then
Str = "False"
Else
Str = "True"
End If
Next
End Sub


3stone

unread,
Jan 25, 2002, 7:35:39 AM1/25/02
to
snack a écrit:

|
| et en effet, iif est 4 fois plus lent que If...Then...Else
|

pas étonnant... mais _parfois_ bien pratique.

mais pour du code, le if then else est en plus
teeelllleeeeement plus "lisible"

Tiens, snack, toi qui "aime" les stats...
Une série de if then... remplacé par
un select case (que j'aime pour sa clarté :)
Ca donne quoi ?

Pierre(3stone)

ps:
désolé si j'occupe tes soirées ;o)))


snack

unread,
Jan 25, 2002, 8:31:54 AM1/25/02
to
> Une série de if then... remplacé par
> un select case (que j'aime pour sa clarté :)
> Ca donne quoi ?

Heureusement que tu es là pour m'occuper, je me demandais ce que j'allais
faire cet après-midi ;-)))
Je suis assez surpris du verdict...
If-Then-Else seulement plus rapide de 2% sur un Select Case.
Autant dire pareil (Entre If-then et IIf, c'était quand même plus rapide de
300 % !!!).
Bon à savoir.

Sub Test_Select_Case()
Dim StrA As String
Dim n As Long

For n = 1 To 1000000

Select Case n
Case 0: StrA = "0"
Case Else: StrA = Str(n)
End Select
Next
End Sub

Sub Test_If_Then2()
Dim StrA As String
Dim n As Long

For n = 1 To 1000000

If n = 0 Then
StrA = "0"
Else
StrA = Str(n)

0 new messages