CONSEIL D'OPTIMISATION ET DE LECTURE DE CODE

celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007
- 24 juin 2004 à 18:38
celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007
- 26 juin 2004 à 20:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23968-conseil-d-optimisation-et-de-lecture-de-code

celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

26 juin 2004 à 20:25
L'ide est lent parce qu'il génère des informations de débogages, c'est à dire que l'exécution de l'application est sans cesse surveillée afin de pouvoir afficher la ligne de code en cours d'exécution. Voilà pourquoi :)

@+
Celiphane
bouv
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
26 juin 2004 à 17:10
Woah !
Que dire de mieux. Effectivement, à chaque fois que l'on change la méthode d'optimisation (P-Code, Natif sans optimisation, Optimisation de la rapidité, on coche ou non les croix...). Les résultats n'arrêtent pas de changer et le classement aussi.
Et quelle lenteur dans l'IDE ??? Si quelqu'un sait pourquoi ! Je ne pense pas que cela viennent de la simple utilisation des ressources système j'ai largement assez de ressources (Athlon Barthon 2600 + 512 Mo DDR 400 Mhz).

++
celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

26 juin 2004 à 13:27
Oui il semble bien que vous ayez raison, j'ai toujours basé mon expérience sur des test DANS l'ide.

Après les quelques révélations dans les messages précédents, j'ai cette fois tester ce code (une Form nommée Form1 et un bouton nommé Command1) :

Private Declare Function GetTickCount Lib "kernel32.dll" () As Long

Private Sub Command1_Click()
Dim d As Long
Dim i As Long
Dim type_byte As Byte
Dim type_int As Integer
Dim type_lng As Long
d = GetTickCount
For i = 1 To 100000000
type_byte = 1
Next i
MsgBox "Temps en ms avec byte : " & CStr(GetTickCount - d)
d = GetTickCount
For i = 1 To 100000000
type_int = 1
Next i
MsgBox "Temps en ms avec integer : " & CStr(GetTickCount - d)
d = GetTickCount
For i = 1 To 100000000
type_lng = 1
Next i
MsgBox "Temps en ms avec long : " & CStr(GetTickCount - d)
End Sub


Et là les résultats RENVERSENT mes appuis :
- testez avec F5 depuis l'ide, et relevez les valeurs de chacuns
- maintenant compiler en sélectionnant "optimiser la rapidité du code" et dans "options avancées" cochez TOUT, tester et hallucinez : le classement change du tout au tout !!! Même MSDN se plante sur ce classement !

Décidément, VB regorge des surprises même pour les plus aguerris !

@+
Celiphane
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
25 juin 2004 à 22:36
un atre conseil.... utiliser Ctrl + F5
ou bien désactiver dans les options "Compilation en arriere plan" et "compilation sur demande"

ca permettra que VB recherche toutes les erreurs tout de suite (nom des variables, declarations........ sans attendre d'arriver dans certaines boucles dans lequelq vos tests ne vous meneront pas forcement (ou pas tout de suite))




pour :
Private Sub Couleur(Index As Integer)

Dim Var As Byte

For Var=0 To Couleur.Count-1
If Var=Index Then Couleur(Var).Checked=1 Else Couleur(Var).Checked=0
Next

End Sub


Si checked vaut 0 ou 1 (comme dans l'exemple proposé) :

Private Sub Couleur(Index As Integer)
Dim Var As Integer
For Var=0 To Couleur.Count-1
Couleur(Var).Checked iif( Var Index, 1 , 0 )
Next
End Sub

ou si Checked est un boolean

Private Sub Couleur(Index As Integer)
Dim Var As Integer
For Var=0 To Couleur.Count-1
Couleur(Var).Checked (Var Index)
Next
End Sub
cs_titicar
Messages postés
181
Date d'inscription
jeudi 30 mai 2002
Statut
Membre
Dernière intervention
19 août 2012

25 juin 2004 à 17:49
Il me semble que sous VB.Net, le type Integer est bani pour être remplacé par le type Long.
Si l'on veut continuer à programmer en VB, on sera bientôt quasi obligé de passer par le Net. Alors prenons tout de suite les bons reflexes et utilisons le type Long :)

@+ et bon prog!
Afficher les 10 commentaires