C Urgent Le Maximum du trois entiers.

cs_Affoufa Messages postés 36 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 20 décembre 2006 - 8 sept. 2006 à 12:45
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 20 sept. 2006 à 16:12
Bonjour,
y a t-il une fonction qui me donne le maximuim de trois entiers ou plus
merci d'avance

25 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
8 sept. 2006 à 12:53
Mouais, un exemple de ce que tu veux serait pas mal !

MsgBox Round(10.423)
--> te retourne 10

MsgBox Round(10.523)
--> te retourne 11

++
0
cs_Affoufa Messages postés 36 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 20 décembre 2006
8 sept. 2006 à 12:57
merci mais moi je veux le max des trois entiers exemple j'ai a =5, b=6 et d=2 je veux max (a,b,c) = b
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
8 sept. 2006 à 13:00
Sub test()
Dim sboub() As Variant
Dim a As Long, b As Long, c As Long, d As Long

sboub = Array(a, b, c, d)
MsgBox sboub(UBound(sboub()) - 1)

End Sub
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
8 sept. 2006 à 13:32
salut,
eh beh Mortalino, t'es pas en forme ^^
renvoyer l'avant dernier.. beh vlà autre chose !!!

bref

affoufa -> non çà n'existe pas en tout fait.
attention à ta question. tu pourras savoir que 6 ets le plus grand, pas b. tu vois la différence?
ensuite ta question c'est sur 3 nombres, OU plus....

Private Sub Form_Load() 
    MsgBox ValMax(5, 6, 2) 
End Sub 
'
Function ValMax(a As Currency, b As Currency, c As Currency) As Currency 
    If (a >=  b) And (a >= c) Then 
        ValMax = a 
    ElseIf b >= c Then 
        ValMax = b 
    Else 
        ValMax = c 
    End If 
End Function

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]

<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
8 sept. 2006 à 13:45
Je confirme, mortalino, là ... faut te reposer un peu

Voici une version qui renvoit le max quel que soit le nombre d'éléments (puisque tu demandais 3 ou plus). Les données doivent préalablement être mises dans un tableau.






Function ValMax(t() As Integer) As Integer
Dim maxVal As Integer
    maxVal = t(LBound(t))
    For i = LBound(t)+1 ToUbound(t)
       If t(i) > maxVal Then
          maxVal = t(i)
       End If
    Next i
ValMax = maxVal
End Function







Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
8 sept. 2006 à 13:55
Ok, je sors... lol

En fait je me suis avoir bêtement : pendant mes test, la plus grande valeur était l'avant dernière, donc pure coincidence !

Je me coucherai une petite heure, ça ira mieux ;)

Affoufa : désolé.

Merci de ne me reprendre.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 sept. 2006 à 14:00
Autre version de la fonction de econs :

Public Function ValMax(ParamArray t())  As Integer
Dim maxVal As Integer 
    maxVal =  t( LBound (t)) 
    For i  = LBound(t) + 1 To UBound(t) 
       If t(i) > maxVal Then 
          maxVal = t(i) 
       End If 
    Next i 
ValMax = maxVal 
End Function 

Plus besoin de mettre tes valeurs dans un tableau, tu appele la fonction ainsi :

toto = ValMax(1, 5, 6, 8, 14, 3, 7, 12)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
8 sept. 2006 à 14:12
casy> Ah ouais, chouette aussi

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
20 sept. 2006 à 11:41
Salut 727088 Affoufa, salut =647037 mortalino, salut 401740 PCPT, salut =100635 econs, et salut 333139 casy,

Je propose, ici, une écriture plus stylée,

Public Function ValMax3(ParamArray t()) As Variant
'ne déclarons pas le Variant temporaire
    For Each valTemp In t
       ValMax3 = IIf(valTemp > ValMax3, valTemp, ValMax3)
    Next valTemp
End Function

, pour un résultat presque identique (pas que sur les entiers),

    MsgBox ValMax3(1,56,57,75,65)
    MsgBox ValMax3("a", "b", "ca", "cc", "c")
    MsgBox ValMax3(#1/1/1982#, #12/20/1984#, #5/30/1967#)

Mais surtout, je propose une batterie de tests (déjà rédigée, juste copier/coller/tester), qui va peut-être ré-habiliter les Variant aux yeux de certains. Bien sûr, vous l'aurez compris, ce n'est qu'un jeu.

Cependant, ne sera pas forcément le gagnant celui qu'on croît.

Pour cela, créez un projet VB exe Standard, dans le formulaire Form1 de celui-ci, ajoutez un bouton de commande Command1, collez le code qui suit, exécutez le projet, en prenant soin d'afficher la fenêtre d'exécution immédiate (de debug quoi!), et sollicitez autant de fois que nécessaire le bouton Command1, jusqu'à ce que vous constatiez que les fonctions ne mettent pas autant de temps à s'exécuter.

Private Sub Command1_Click()
Dim sngDebut1 As Single, sngDebut2 As Single, sngDebut3 As Single
Dim sngFin1 As Single, sngFin2 As Single, sngFin3 As Single
Dim sngDuree1 As Single, sngDuree2 As Single, sngDuree3 As Single
Dim varMax As Variant, varClassement As Variant
    '********************************************
    '*** Max en dernier
    '********************************************
    Debug.Print
    Debug.Print"30 arguments (de grandes valeurs), max en dernier"
    sngDebut1 = Timer
    varMax = ValMax(32000, 32001, 32001, 32003, 32004, 32005, 32006, 32007, 32008, 32009, 32010, 32011, 32012, 32013, 32014, 32015, 32016, 32017, 32018, 32019, 32020, 32021, 32022, 32023, 32024, 32025, 32026, 32027, 32028, 32029)
    sngFin1 = Timer
   
    sngDebut2 = Timer
    varMax = ValMax2(32000, 32001, 32001, 32003, 32004, 32005, 32006, 32007, 32008, 32009, 32010, 32011, 32012, 32013, 32014, 32015, 32016, 32017, 32018, 32019, 32020, 32021, 32022, 32023, 32024, 32025, 32026, 32027, 32028, 32029)
    sngFin2 = Timer
   
    sngDebut3 = Timer
    varMax = ValMax3(32000, 32001, 32001, 32003, 32004, 32005, 32006, 32007, 32008, 32009, 32010, 32011, 32012, 32013, 32014, 32015, 32016, 32017, 32018, 32019, 32020, 32021, 32022, 32023, 32024, 32025, 32026, 32027, 32028, 32029)
    sngFin3 = Timer
    '********************************************
    '*** Classement
    '********************************************
    sngDuree1 = sngFin1 - sngDebut1
    sngDuree2 = sngFin2 - sngDebut2
    sngDuree3 = sngFin3 - sngDebut3    If (sngDuree1 sngDuree2) And (sngDuree1 sngDuree3) Then
        Debug.Print "pas de différence de durée de traitement entre les 3"
    Else
        Debug.Print "1/ ValMax : " & sngDuree1
        Debug.Print "2/ ValMax2 : " & sngDuree2
        Debug.Print "3/ ValMax3 : " & sngDuree3
        
        Debug.Print "Classement :"
        Debug.Print "1/" & vbTab & "2/" & vbTab & "3/"
        varClassement = Classement(sngDuree1, sngDuree2, sngDuree3)
        Debug.PrintJoin(varClassement, vbTab)
    End If
    '********************************************
    '*** Max en premier
    '********************************************
    Debug.Print"30 arguments (de grandes valeurs), max en premier"
    sngDebut1 = Timer
    varMax = ValMax(32029, 32028, 32027, 32026, 32025, 32024, 32023, 32022, 32021, 32020, 32019, 32018, 32017, 32016, 32015, 32014, 32013, 32012, 32011, 32010, 32009, 32008, 32007, 32006, 32005, 32004, 32003, 32002, 32001, 32000)
    sngFin1 = Timer
   
    sngDebut2 = Timer
    varMax = ValMax2(32029, 32028, 32027, 32026, 32025, 32024, 32023, 32022, 32021, 32020, 32019, 32018, 32017, 32016, 32015, 32014, 32013, 32012, 32011, 32010, 32009, 32008, 32007, 32006, 32005, 32004, 32003, 32002, 32001, 32000)
    sngFin2 = Timer
   
    sngDebut3 = Timer
    varMax = ValMax3(32029, 32028, 32027, 32026, 32025, 32024, 32023, 32022, 32021, 32020, 32019, 32018, 32017, 32016, 32015, 32014, 32013, 32012, 32011, 32010, 32009, 32008, 32007, 32006, 32005, 32004, 32003, 32002, 32001, 32000)
    sngFin3 = Timer
    '********************************************
    '*** Classement
    '********************************************
    sngDuree1 = sngFin1 - sngDebut1
    sngDuree2 = sngFin2 - sngDebut2
    sngDuree3 = sngFin3 - sngDebut3    If (sngDuree1 sngDuree2) And (sngDuree1 sngDuree3) Then
        Debug.Print "pas de différence de durée de traitement entre les 3"
    Else
        Debug.Print "1/ ValMax : " & sngDuree1
        Debug.Print "2/ ValMax2 : " & sngDuree2
        Debug.Print "3/ ValMax3 : " & sngDuree3
        
        Debug.Print "Classement :"
        Debug.Print "1/" & vbTab & "2/" & vbTab & "3/"
        varClassement = Classement(sngDuree1, sngDuree2, sngDuree3)
        Debug.Print Join(varClassement, vbTab)
    End If
End Sub



Public Function ValMax(ParamArray t()) As Integer
Dim maxVal As Integer
    maxVal = t(LBound(t))
    For i = LBound(t) + 1 To UBound(t)
       If t(i) > maxVal Then
          maxVal = t(i)
       End If
    Next i
ValMax = maxVal
End Function



Public Function ValMax2(ParamArray t()) As Variant
Dim valTemp As Variant
    For Each valTemp In t
       ValMax2 = IIf(valTemp > ValMax2, valTemp, ValMax2)
    Next valTemp
End Function



Public Function ValMax3(ParamArray t()) As Variant
'ne déclarons pas le Variant temporaire
    For Each valTemp In t
       ValMax3 = IIf(valTemp > ValMax3, valTemp, ValMax3)
    Next valTemp
End Function




'******************************************
'*** Outil, juste pour la démo
'******************************************
Public Function Classement(ParamArray t()) As Variant
Dim ClassementTemp() As Variant
    ReDim ClassementTemp(LBound(t) To UBound(t))
    i = 0
    For Each valTemp In t
        ClassementTemp(i) = 1
        For Each valTemp2 In t
            ClassementTemp(i) = IIf(valTemp > valTemp2, ClassementTemp(i) + 1, ClassementTemp(i))
        Next valTemp2
        i = i + 1
    Next valTemp
    Classement = ClassementTemp
End Function

Evidemment, c'est un peu démagogique de ma part, le ParamArray traitant des Variant, mais, quand on laisse parler la communauté, elle aboutit à des solutions ergonomique les utilisant (bien vu, Casy).

Allez, tous en coeur, Non à l'EuroMillion, Non...

espérant plus vous divertir que vous convertir
à+






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 sept. 2006 à 12:00
C'est une plaisanterie j'espère !!!!

Comment peux-tu prétendre mesurer une durée d'exécution en utilisant Timer.
Pour info Timer a une résolution de 18ms (18.2 pour être exact), donc ta mesure sera à +/-18ms près. Et tout ce qui est en dessous de 18ms sera égal à 0

J'espère quand même que toutes les boucles mêmes les pires, fonctionnent toutes en dessous des 18ms, sinon ça devient grave.

Pour info, le type Variant est obsolète, il a disparu dans .NET

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
20 sept. 2006 à 12:06
Je suis totalement d'accord avec toi, c'est une plaisanterie,


mais, si tu veux, fais le test!

PS: ça reste quand même toi qui a fini par proposer le ParamArray!
PS2 : je l'ai dit (enfin écrit), ce n'est qu'un jeu :)






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 sept. 2006 à 12:12
Ca ne sert à rien de faire le test puisque les résultats seront de toute façon faussés.
Les durées seront inférieures à 18ms donc égales à 0 avec ton code. Sans même essayer le code, j'en déduit que tu trouve que les différentes façons de calculer se valent en temps d'exécution, forcement puisque tu n'arrive pas à les évaluées correctement.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
20 sept. 2006 à 12:20
Grossière erreur,


je ne cherche pas à mesurer précisément le temps d'exécution de chacune, je cherche à détecter, quand l'une d'entre elles dépassent les 18ms (pardon 18,2), laquelle l'a fait (c'est pour cela que je demande de "solliciter" le bouton Command1 autant de fois que nécessaire).

Et ça arrive, et ce n'est pas forcément celle qu'on croit.

Par contre, j'avoue que s'il y a une vitesse d'exécution que je ne peux pas mesurer, c'est celle du temps qui va passer avant que tu fasse le test :)

Pardon, casy, si je t'ai agacé, ce n'était pas du tout le but.

PS : ça va peut-être le devenir (mais non, j'rigole, je ne fais de l'indus qu'à 45% de mon temps, mais je respecte ceux qui en font plus, je les lis [sur VBF], et je teste ce qu'ils font [sur VBF aussi])






rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 sept. 2006 à 12:39
J'ai fait le test, en modifiant ton code pour mesurer plus précisément. Et chez moi aucune ne dépasse 1ms même en solicitant énormément le bouton. J'ai juste la fenetre Debug qui a du mal à suivre quand je force trop.
Ce qui ne m'étonne pas vraiment. Il faudrait augmenter considérablement le nombre de valeur à tester pour commencer à avoir des mesures significatives.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
20 sept. 2006 à 12:42
salut,

y'a pas de quoi se monter le bourichon ^^

voici la trace du test effectué avec QueryPerformanceCounter

<hr size= "2" width="100%" />30 arguments (de grandes valeurs), max en dernier
1/ ValMax : 0,1095
2/ ValMax2 : 0,0824
3/ ValMax3 : 0,0425
Classement :
1/  2/  3/
3   2   1
30 arguments (de grandes valeurs), max en premier
1/ ValMax : 0,0947
2/ ValMax2 : 0,0534
3/ ValMax3 : 0,0402
Classement :
1/  2/  3/
3   2   1

30 arguments (de grandes valeurs), max en dernier
1/ ValMax : 0,102
2/ ValMax2 : 0,0534
3/ ValMax3 : 0,0413
Classement :
1/  2/  3/
3   2   1
30 arguments (de grandes valeurs), max en premier
1/ ValMax : 0,5168
2/ ValMax2 : 0,074
3/ ValMax3 : 0,0425
Classement :
1/  2/  3/
3   2   1

30 arguments (de grandes valeurs), max en dernier
1/ ValMax : 0,0986
2/ ValMax2 : 0,0553
3/ ValMax3 : 0,0411
Classement :
1/  2/  3/
3   2   1
30 arguments (de grandes valeurs), max en premier
1/ ValMax : 0,0936
2/ ValMax2 : 0,0531
3/ ValMax3 : 0,0405
Classement :
1/  2/  3/
3   2   1
<hr size="2" width="100%" />
je vous vois arriver : "le code n'est pas compilé".... voyons çà (fichier log)

<hr size="2" width="100%" />[12:34:35] 30 arguments (de grandes valeurs), max en dernier
[12:34:35] 1/ ValMax : 0,1483
[12:34:35] 2/ ValMax2 : 1,1122
[12:34:35] 3/ ValMax3 : 0,0833
[12:34:35] Classement :
[12:34:35] 1/    2/    3/
[12:34:35] 2    3    1
[12:34:35] 
[12:34:35] 30 arguments (de grandes valeurs), max en premier
[12:34:35] 1/ ValMax : 0,1081
[12:34:35] 2/ ValMax2 : 0,0478
[12:34:35] 3/ ValMax3 : 0,0372
[12:34:35] Classement :
[12:34:35] 1/    2/    3/
[12:34:35] 3    2    1
[12:34:35] 
[12:34:35] 
[12:34:35] 30 arguments (de grandes valeurs), max en dernier
[12:34:35] 1/ ValMax : 0,0902
[12:34:35] 2/ ValMax2 : 0,0481
[12:34:35] 3/ ValMax3 : 0,0369
[12:34:35] Classement :
[12:34:35] 1/    2/    3/
[12:34:35] 3    2    1
[12:34:35] 
[12:34:35] 30 arguments (de grandes valeurs), max en premier
[12:34:35] 1/ ValMax : 0,0738
[12:34:35] 2/ ValMax2 : 0,0492
[12:34:35] 3/ ValMax3 : 0,0399
[12:34:35] Classement :
[12:34:35] 1/    2/    3/
[12:34:35] 3    2    1
[12:34:35] 
[12:34:35] 
[12:34:35] 30 arguments (de grandes valeurs), max en dernier
[12:34:35] 1/ ValMax : 0,0802
[12:34:35] 2/ ValMax2 : 0,0494
[12:34:35] 3/ ValMax3 : 0,0399
[12:34:35] Classement :
[12:34:35] 1/    2/    3/
[12:34:35] 3    2    1
[12:34:35] 
[12:34:35] 30 arguments (de grandes valeurs), max en premier
[12:34:35] 1/ ValMax : 0,0813
[12:34:35] 2/ ValMax2 : 0,0489
[12:34:35] 3/ ValMax3 : 0,0405
[12:34:35] Classement :
[12:34:35] 1/    2/    3/
[12:34:35] 3    2    1
<hr size="2" width="100%" />

conclusion

compilé ou non, le tri de tableau est plus long que tri de variant....
le tris de variant s'équivalent avec ou sans déclaration (çà ne n'est pas un secret....)

encore faudrait-il aussi tester le For i au lieu de For Each et vice-versa, dans tous les cas.
seulement tout ceci ne prouve rien, on parle de des ressources prises par les Variant.
ces ressources sont en RAM et pas en cadence proc.

je veux bien, on préfèrera parfois une certaine rapidité (et c'est même en général le seul but recherché), maintenant le test devrait être fait sur un trableau de bien plus conséquent, et en déclarant toutes les variables (toujours ^^)

ps : temps exprimé en ms ^^
++
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
20 sept. 2006 à 13:50
En vérité,

ce qui m'a le plus étonné,
c'est que le IIF, qui affecte à chaque tour de boucle, ne provoque pas une différence plus grande que ça.

Après, au delà du jeu, c'était orienté "eh ben moi, y a qu'3 lign...es" :)

Faut bien s'occuper parfois!

PS: ça y est, je suis en récup
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
20 sept. 2006 à 14:19
PCPT,

quand tu dis temps exprimé en ms, tu veux dire ValMax : 0,0813ms?
et comment faites-vous pour mesurer de si petites durées?
quelle est la modif que tu fais casy ?

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 sept. 2006 à 14:28
PCPT à utiliser l'API QueryPerformanceCounter, qui fait appel à un compteur système très precis (mais qui peut ne pas etre installé sur ta machine, ça dépend des cartes mères si mes souvenir). Precision en fonction de la machine mais largement inférieure à 1ms

Moi j'ai simplement remplacer Timer par GetTickCount, qui est une api qui renvoie le nombre de ms depuis le chargement de Windows. Precision de 1ms.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
20 sept. 2006 à 14:34
pour plus d'infos sur iif
http://www.vbfrance.com/codes/ATTENTION-IIF_33789.aspx

à savoir que de toute manière il est modifié en if else à la compilation (donc...).

bon, on ne peut pas rester si des tests si peu représentatifs....

j'ajoute 2 3 bricoles, c'est à dire au début du click un tableau de 60000 nombres, et les tests (espérons les révélateurs) se font sur des tableaux de variant (et non plus ParamArray)

çà donne en gros :

Function MoreNumbers() As Variant() 
    Dim i&, avRet(59999) As Variant 

    For i =  0 To 5999 
        avRet(i) = Fix(Rnd * 9999) + 1111) 
    Next i 
    MoreNumbers = avRet 

    Erase avRet 
End Function

''''''''''''''''''''''

Public Function ValMax(t()) As Variant

une trace?
la différence (espace et temps) et IDE vs EXE

<hr size="2" width="100%" />[14:24:24] 60000 arguments (de grandes valeurs), max en dernier
[14:24:24] 1/ ValMax : 24,966
[14:24:24] 2/ ValMax2 : 49,8128
[14:24:24] 3/ ValMax3 : 102,434
[14:24:24] Classement :
[14:24:24] 1/    2/    3/
[14:24:24] 1    2    3
[14:24:24] 
[14:24:24] 60000 arguments (de grandes valeurs), max en premier
[14:24:24] 1/ ValMax : 21,7922
[14:24:24] 2/ ValMax2 : 53,9608
[14:24:24] 3/ ValMax3 : 50,4941
[14:24:24] Classement :
[14:24:24] 1/    2/    3/
[14:24:24] 1    3    2
[14:24:25] 
[14:24:25] 
[14:24:25] 60000 arguments (de grandes valeurs), max en dernier
[14:24:25] 1/ ValMax : 20,6244
[14:24:25] 2/ ValMax2 : 71,6982
[14:24:25] 3/ ValMax3 : 59,8976
[14:24:25] Classement :
[14:24:25] 1/    2/    3/
[14:24:25] 1    3    2
[14:24:25] 
[14:24:25] 60000 arguments (de grandes valeurs), max en premier
[14:24:25] 1/ ValMax : 19,277
[14:24:25] 2/ ValMax2 : 56,2736
[14:24:25] 3/ ValMax3 : 60,0006
[14:24:25] Classement :
[14:24:25] 1/    2/    3/
[14:24:25] 1    2    3
[14:24:25] 
[14:24:25] 
[14:24:25] 60000 arguments (de grandes valeurs), max en dernier
[14:24:25] 1/ ValMax : 20,1953
[14:24:25] 2/ ValMax2 : 52,7813
[14:24:25] 3/ ValMax3 : 57,5459
[14:24:25] Classement :
[14:24:25] 1/    2/    3/
[14:24:25] 1    2    3
[14:24:25] 
[14:24:25] 60000 arguments (de grandes valeurs), max en premier
[14:24:25] 1/ ValMax : 24,0877
[14:24:25] 2/ ValMax2 : 59,1184
[14:24:25] 3/ ValMax3 : 50,2589
[14:24:25] Classement :
[14:24:25] 1/    2/    3/
[14:24:25] 1    3    2
[14:24:26] 
[14:24:26] 
[14:24:26] 60000 arguments (de grandes valeurs), max en dernier
[14:24:26] 1/ ValMax : 19,1854
[14:24:26] 2/ ValMax2 : 49,4529
[14:24:26] 3/ ValMax3 : 52,0589
[14:24:26] Classement :
[14:24:26] 1/    2/    3/
[14:24:26] 1    2    3
[14:24:26] 
[14:24:26] 60000 arguments (de grandes valeurs), max en premier
[14:24:26] 1/ ValMax : 19,7031
[14:24:26] 2/ ValMax2 : 55,5051
[14:24:26] 3/ ValMax3 : 50,0768
[14:24:26] Classement :
[14:24:26] 1/    2/    3/
[14:24:26] 1    3    2
<hr size="2" width="100%" />[14:25:23] 60000 arguments (de grandes valeurs), max en dernier
[14:25:23] 1/ ValMax : 11,2855
[14:25:23] 2/ ValMax2 : 38,6493
[14:25:23] 3/ ValMax3 : 44,3394
[14:25:23] Classement :
[14:25:23] 1/    2/    3/
[14:25:23] 1    2    3
[14:25:23] 
[14:25:23] 60000 arguments (de grandes valeurs), max en premier
[14:25:24] 1/ ValMax : 9,2956
[14:25:24] 2/ ValMax2 : 40,9113
[14:25:24] 3/ ValMax3 : 139,2903
[14:25:24] Classement :
[14:25:24] 1/    2/    3/
[14:25:24] 1    2    3
[14:25:24] 
[14:25:24] 
[14:25:24] 60000 arguments (de grandes valeurs), max en dernier
[14:25:24] 1/ ValMax : 8,3849
[14:25:24] 2/ ValMax2 : 43,2083
[14:25:24] 3/ ValMax3 : 91,4784
[14:25:24] Classement :
[14:25:24] 1/    2/    3/
[14:25:24] 1    2    3
[14:25:24] 
[14:25:24] 60000 arguments (de grandes valeurs), max en premier
[14:25:24] 1/ ValMax : 9,6124
[14:25:24] 2/ ValMax2 : 43,515
[14:25:24] 3/ ValMax3 : 40,2135
[14:25:24] Classement :
[14:25:24] 1/    2/    3/
[14:25:24] 1    3    2
[14:25:24] 
[14:25:24] 
[14:25:24] 60000 arguments (de grandes valeurs), max en dernier
[14:25:24] 1/ ValMax : 8,8559
[14:25:24] 2/ ValMax2 : 39,4578
[14:25:25] 3/ ValMax3 : 39,2276
[14:25:25] Classement :
[14:25:25] 1/    2/    3/
[14:25:25] 1    3    2
[14:25:25] 
[14:25:25] 60000 arguments (de grandes valeurs), max en premier
[14:25:25] 1/ ValMax : 16,4719
[14:25:25] 2/ ValMax2 : 124,6231
[14:25:25] 3/ ValMax3 : 46,9484
[14:25:25] Classement :
[14:25:25] 1/    2/    3/
[14:25:25] 1    3    2
<hr size="2" width="100%" />
testé aussi avec 6000 (10 fois moins), la différence est moins importante mais pas mal non plus

conclusion

la tri INTEGER prend entre de 3 et 15 fois moins de temps que le VARIANT (et moins de ressources par définition)

amusant ces petits tests ^^

ps : récup = encore un changement de signature?
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
20 sept. 2006 à 14:39
rvblog -> oui, 0,0813ms, donc moins de1ms. voir dans mes sources -> AfTimer (à passer en Bench, exemple fourni)
par contre en réalité c'est plus cours puisque le timer prend son propre temps, quoi qu'il em semble avoir joué comme il fallait....

casy -> je croyais aussi mais non (enfin presque), cette API est supportée par toutes les CM depuis plus de 10 ans. je fais d'ailleurs le test (inutilement) dans mon AfTimer

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Rejoignez-nous