Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - Division entière VS Fonction INT()

1 réponse
Avatar
Clément Marcotte
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()

1 réponse

Avatar
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()