Suite à ma fonction DivisionEntière(), un peu plus haut/plus bas, j'ai
eu envie de vérifier s'il y avait une quelconque différence de
performance entre la division entière et la fonction INT(). J'ai donc
concocté la petite macro suivante:
Sub compare()
Dim i As Long, temps1 As Double
Dim temps2 As Double, resultat As Integer
Range("b1").Value = "Division entière"
Range("c1").Value = "Fonction VBA INT()"
Range("a2").Value = "Réponse"
Range("a3").Value = "Temps"
temps1 = Timer
For i = 1 To 500000
resultat = 11 \ 3
Next
temps2 = Timer
Range("b2").Value = resultat
Range("b3").Value = temps2 - temps1
temps1 = Timer
For i = 1 To 500000
resultat = Int(11 / 3)
Next
temps2 = Timer
Range("c2").Value = resultat
Range("c3").Value = temps2 - temps1
End Sub
Avec Excel 2002, Windows 98, un Celeron à 333 MZ cela donne pour
50,000 itérations 0 pour la division entière et 0,05 pour INT()
Avec 500 000 itérations, cela donne 0,16 seconde pour la division
entière, et 0,44 seconde pour la fonction INT()
Avec 5 000 000 itérations, cela donne 3,51 secondes pour la division
entière, et 5,17 secondes pour la fonction INT()
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-François Aubert
Salut Clément,
Avec Excel 2000, WinMe, un Penthium à 900 MZ cela donne pour 5'000'000 itérations 0.38 pour la division entière et 1.27 pour INT()
un rapport de 3.34 pour ma bécane contre 1.47 pour la tienne !
PS: je n'avais jamais pris garde qu'une variable de type Integer renvoi un nombre entier .... je m'endormirai moins bête ... -- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Clément Marcotte" a écrit dans le message de news:%
Bonjour,
Suite à ma fonction DivisionEntière(), un peu plus haut/plus bas, j'ai eu envie de vérifier s'il y avait une quelconque différence de performance entre la division entière et la fonction INT(). J'ai donc concocté la petite macro suivante:
Sub compare() Dim i As Long, temps1 As Double Dim temps2 As Double, resultat As Integer Range("b1").Value = "Division entière" Range("c1").Value = "Fonction VBA INT()" Range("a2").Value = "Réponse" Range("a3").Value = "Temps" temps1 = Timer For i = 1 To 500000 resultat = 11 3 Next temps2 = Timer Range("b2").Value = resultat Range("b3").Value = temps2 - temps1 temps1 = Timer For i = 1 To 500000 resultat = Int(11 / 3) Next temps2 = Timer Range("c2").Value = resultat Range("c3").Value = temps2 - temps1 End Sub
Avec Excel 2002, Windows 98, un Celeron à 333 MZ cela donne pour 50,000 itérations 0 pour la division entière et 0,05 pour INT()
Avec 500 000 itérations, cela donne 0,16 seconde pour la division entière, et 0,44 seconde pour la fonction INT()
Avec 5 000 000 itérations, cela donne 3,51 secondes pour la division entière, et 5,17 secondes pour la fonction INT()
Salut Clément,
Avec Excel 2000, WinMe, un Penthium à 900 MZ cela donne pour
5'000'000 itérations 0.38 pour la division entière et 1.27 pour INT()
un rapport de 3.34 pour ma bécane contre 1.47 pour la tienne !
PS: je n'avais jamais pris garde qu'une variable de type Integer renvoi un nombre entier
.... je m'endormirai moins bête ...
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Clément Marcotte" <clement.marcotte@sympatico.ca> a écrit dans le message de
news:%23EOQZ2JSDHA.1072@TK2MSFTNGP10.phx.gbl...
Bonjour,
Suite à ma fonction DivisionEntière(), un peu plus haut/plus bas, j'ai
eu envie de vérifier s'il y avait une quelconque différence de
performance entre la division entière et la fonction INT(). J'ai donc
concocté la petite macro suivante:
Sub compare()
Dim i As Long, temps1 As Double
Dim temps2 As Double, resultat As Integer
Range("b1").Value = "Division entière"
Range("c1").Value = "Fonction VBA INT()"
Range("a2").Value = "Réponse"
Range("a3").Value = "Temps"
temps1 = Timer
For i = 1 To 500000
resultat = 11 3
Next
temps2 = Timer
Range("b2").Value = resultat
Range("b3").Value = temps2 - temps1
temps1 = Timer
For i = 1 To 500000
resultat = Int(11 / 3)
Next
temps2 = Timer
Range("c2").Value = resultat
Range("c3").Value = temps2 - temps1
End Sub
Avec Excel 2002, Windows 98, un Celeron à 333 MZ cela donne pour
50,000 itérations 0 pour la division entière et 0,05 pour INT()
Avec 500 000 itérations, cela donne 0,16 seconde pour la division
entière, et 0,44 seconde pour la fonction INT()
Avec 5 000 000 itérations, cela donne 3,51 secondes pour la division
entière, et 5,17 secondes pour la fonction INT()
Avec Excel 2000, WinMe, un Penthium à 900 MZ cela donne pour 5'000'000 itérations 0.38 pour la division entière et 1.27 pour INT()
un rapport de 3.34 pour ma bécane contre 1.47 pour la tienne !
PS: je n'avais jamais pris garde qu'une variable de type Integer renvoi un nombre entier .... je m'endormirai moins bête ... -- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Clément Marcotte" a écrit dans le message de news:%
Bonjour,
Suite à ma fonction DivisionEntière(), un peu plus haut/plus bas, j'ai eu envie de vérifier s'il y avait une quelconque différence de performance entre la division entière et la fonction INT(). J'ai donc concocté la petite macro suivante:
Sub compare() Dim i As Long, temps1 As Double Dim temps2 As Double, resultat As Integer Range("b1").Value = "Division entière" Range("c1").Value = "Fonction VBA INT()" Range("a2").Value = "Réponse" Range("a3").Value = "Temps" temps1 = Timer For i = 1 To 500000 resultat = 11 3 Next temps2 = Timer Range("b2").Value = resultat Range("b3").Value = temps2 - temps1 temps1 = Timer For i = 1 To 500000 resultat = Int(11 / 3) Next temps2 = Timer Range("c2").Value = resultat Range("c3").Value = temps2 - temps1 End Sub
Avec Excel 2002, Windows 98, un Celeron à 333 MZ cela donne pour 50,000 itérations 0 pour la division entière et 0,05 pour INT()
Avec 500 000 itérations, cela donne 0,16 seconde pour la division entière, et 0,44 seconde pour la fonction INT()
Avec 5 000 000 itérations, cela donne 3,51 secondes pour la division entière, et 5,17 secondes pour la fonction INT()