C Urgent Le Maximum du trois entiers.

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

25 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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

++
Messages postés
36
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
20 décembre 2006

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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
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.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
casy> Ah ouais, chouette aussi

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
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>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
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>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
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>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
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>
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
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>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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