Page 3 sur 7
					
				
				Publié : mar. 07/avr./2009 13:29
				par Backup
				Fortix a écrit :Salut, je n'ais pas parcourru de A à Z ce topic mais j'ais compris Grosso Modo de quoi ça parle 
 
et effectivement 
il faut créer une 
Norme de présentation 
effectivement , tu aurai mieux fait de lire le topic !!
tu aurai constaté, qu'il ne s'agit pas du tout d'imposer une norme, mais tout simplement de donner des conseils, qui peuvent aider a se retrouver dans un code, même vieux de plusieurs années !!
tu peux continuer a programmer comme bon te semble , il n'est nullement question, de vouloir obliger a quoique ce soit ..(encore heureux !! 

 )
la prochaine fois, lit le topic en entier , cela évitera ce genre de réflexion 

 ---->
il est donc prudent de lancer un sondage au préalable, et si il y a "une allimité" (c'est bien écrit 

 ) mettre au point une forme de présentation dite "universelle"
 
			 
			
					
				
				Publié : mer. 08/avr./2009 15:33
				par Fortix
				
 pas la peine de s'énerver 
 
et puis en plus ce semblant de sujet reste dans le bon sens (à condition de ne pas obliger qui que se soit bien sûr 

 )
organiser son code (Tabul, espace entre le procedure, zone de commentaire au conditionnel, noms des variables non abstraites, etc...)pour mieux être compris  

 
			 
			
					
				
				Publié : mer. 08/avr./2009 16:07
				par Backup
				Fortix a écrit :
 pas la peine de s'énerver 
  
oui c'est sur ! 

 
			 
			
					
				
				Publié : sam. 25/avr./2009 21:28
				par Ollivier
				Au lieu d'écrire
Il est plus rapide à l'exécution d'écrire
... Et de placer en Condition1 la plus condition qui sera estimée le plus souvent fausse.
 
			 
			
					
				
				Publié : sam. 25/avr./2009 23:31
				par cha0s
				Ollivier a écrit :Au lieu d'écrire
Il est plus rapide à l'exécution d'écrire
 
ceci me prouve le contraire
Code : Tout sélectionner
a = #False
temp = ElapsedMilliseconds()
For n = 1 To 10000000
  If a And a
  
  EndIf
Next n
Debug ElapsedMilliseconds() - temp
temp = ElapsedMilliseconds()
For n = 1 To 10000000
  If a 
    If a
    
    EndIf
  EndIf
Next n
Debug ElapsedMilliseconds() - temp
 
			 
			
					
				
				Publié : dim. 26/avr./2009 1:41
				par Ollivier
				@ChaOs           Si, si : j'insiste: 30% de gain ici !
Code : Tout sélectionner
DisableDebugger ; ********************************************************** 1
a = #False
Delay(1) ; ******************************************************************* 2
temp = ElapsedMilliseconds()
For n = 1 To 100000000
  If a And a
 
  EndIf
Next n
Norm = ElapsedMilliseconds() - temp
MessageRequester("Norm1", Str(Norm) )
Delay(1) ; ******************************************************************** 3
temp = ElapsedMilliseconds()
For n = 1 To 100000000
  If a
    If a
   
    EndIf
  EndIf
Next n
Opti = ElapsedMilliseconds() - temp
MessageRequester("Opti1", Str(Opti) ) 
a = #True
Delay(1)
temp = ElapsedMilliseconds()
For n = 1 To 100000000
  If a And a
 
  EndIf
Next n
Norm + (ElapsedMilliseconds() - temp)
MessageRequester("Norm1", Str(Norm) )
Delay(1)
temp = ElapsedMilliseconds()
For n = 1 To 100000000
  If a
    If a
   
    EndIf
  EndIf
Next n
Opti + (ElapsedMilliseconds() - temp)
MessageRequester("Conclusion pour False ET pour True", "Normal = " + Str(Norm) + Chr(10) + "Opti = " + Str(Opti) ) 
 
			 
			
					
				
				Publié : dim. 26/avr./2009 8:13
				par Ollivier
				Dans le prolongement booléen de cette banane, voici un autre code
Code : Tout sélectionner
Macro MyMacro()
...
EndMacro
If Condition1 Or Condition2
   MyMacro()
EndIf
Il est plus rapide à l'exécution d'inverser les deux conditions manuellement et d'écrire ceci à la place:
Code : Tout sélectionner
Macro MyMacro()
...
EndMacro
If (Not Condition1) ; Ici, on inverse ('=' devient '<>', etc...)
   If (Not Condition2) ; Ici, idem
      ; Ligne vide
   Else
      MyMacro()
   EndIf
Else
   MyMacro()
EndIf
Woilà. Il fallait que je la fasse en deux étapes celle-là!
Pourquoi faire simple quand on peut faire compliqué? 
>> Parce qu'il faut se méfier des apparences : c'est plus véloce ! 
Ollivier
 
			 
			
					
				
				Publié : dim. 26/avr./2009 13:12
				par cha0s
				@Olivier : exacte le debugeur fausse les résultats mais pour avoir des tests vraiment pointue faudrait voir le nombre de cycle utilisé.
			 
			
					
				
				Publié : dim. 26/avr./2009 13:47
				par PAPIPP
				Bonjour a tous
Je viens de réaliser plusieurs tests sur l'optimisation
statistiquement le if imbriqué est plus rapide que le AND
Par contre le (if not cd1) est toujours plus lent que le If normal
Exemple :
Code : Tout sélectionner
DisableDebugger ; ********************************************************** 1
mes.s=""
maxit=100000000
For i=0 To 5
If i%2
  a=a=#True
  aa.s="oui"
  bb.s="non"
Else
  a = #False
  aa.s="non"
  bb.s="oui"
EndIf
mes=mes+Str(a)+" ****"+Chr(10)
temp = ElapsedMilliseconds()
For n = 1 To maxit
  If a And a
  EndIf
Next n
tp1=ElapsedMilliseconds()-temp
temp = ElapsedMilliseconds()
For n = 1 To maxit
  If a
    If a
      
    EndIf
  EndIf
Next n
tp2=ElapsedMilliseconds()-temp
temp = ElapsedMilliseconds()
For n = 1 To maxit
  If aa="non" And bb="oui"
    
  EndIf
Next n
tp3=ElapsedMilliseconds()-temp
temp = ElapsedMilliseconds()
For n = 1 To maxit
  If aa="non"
    If bb="oui"
      
    EndIf
  EndIf
Next n
tp4=ElapsedMilliseconds()-temp
temp = ElapsedMilliseconds()
For n = 1 To maxit
  If Not (aa<>"non")
    If Not (bb<>"oui")
      
    EndIf
  EndIf
Next n
tp5=ElapsedMilliseconds()-temp
mes=mes+"AND1_"+Str(I)+"= "+Str(tp1)+Chr(10)
mes=mes+"IF1_"+Str(I)+"= "+Str(tp2)+Chr(10)
mes=mes+"AND2_"+Str(I)+"= "+Str(tp3)+Chr(10)
mes=mes+"IF2_"+Str(I)+"= "+Str(tp4)+Chr(10)
mes=mes+"IF2 inv_"+Str(I)+"= "+Str(tp5)+Chr(10)
mes=mes+"****"+Chr(10)
Next i
MessageRequester("AND ou IF ", mes )
A+
 
			 
			
					
				
				Publié : dim. 26/avr./2009 14:23
				par cha0s
				dans le cas ou il y a beaucoup de test, privilégier le select peut être un plus
Code : Tout sélectionner
DisableDebugger
a = 7
temp = ElapsedMilliseconds()
For n = 1 To 100000000
  Select a
    Case 1
    Case 2
    Case 3
    Case 4
    Case 5
    Case 6
    Case 7
  EndSelect
Next n
temp = ElapsedMilliseconds() - temp
MessageRequester("", Str(temp)) 
temp = ElapsedMilliseconds()
For n = 1 To 100000000
  If a = 1
  ElseIf a = 2
  
  ElseIf a = 3
  
  ElseIf a = 4
  
  ElseIf a = 5
  
  ElseIf a = 6
  
  ElseIf a = 7
  
  EndIf
Next n
temp = ElapsedMilliseconds() - temp
MessageRequester("", Str(temp)) 
 
			 
			
					
				
				Publié : ven. 01/mai/2009 19:59
				par KrisJNT
				puisque l'on est dans méthode et beauté du code,
je voudrais savoir :
est-il possible décrire une ligne de code sur plusieurs ligne ? L'idéal serait (pour moi) des lignes comme ceci :
Code : Tout sélectionner
OpenWindow(#window, _
10, 10, _
640, 480, _
"Titre de ma fenêtre", _
#WS_VISIBLE)
Cette écriture qui permet de poursuivre une ligne de code sur une autre est celle de Liberty Basic, le langage de programmation que j'utilisais avant PB. Justement, je trouve PB très bien, mais comm syntaxe, les commandes sont un peu longue et ça donne un impression de surcharge, je trouve...
Bref, s'il y a un moyen, comment peut-on faire ?
 
			 
			
					
				
				Publié : ven. 01/mai/2009 20:17
				par Backup
				non pas possible actuellement , peut etre la prochaine version 

 
			 
			
					
				
				Publié : mar. 12/mai/2009 18:03
				par jerexgrz
				select case ... est plus rapide que if ... elseif ... ?
bizarre j'ai le contraire (debuggeur desactivé):
859 le 1er
813 le 2nd (if ...)
			 
			
					
				
				Publié : ven. 15/mai/2009 15:35
				par Geo Trouvpatou
				Salut.
Bon je voulais tester quelques trucs au niveau rapidité d'execution.
Donc je viens ici pour récupérer un code pour un benchmark, mais je me demande si cela sert à quelque chose.
Vous dites que tel ou tel truc est plus rapide que tel autre truc.
Moi je veux bien mais dans le code ci-dessous quel est le plus rapide pour les un et les autres 
 
Code : Tout sélectionner
DisableDebugger ; ********************************************************** 1 
Delay(1) ; ******************************************************************* 2 
temp = ElapsedMilliseconds() 
For n = 1 To 100000000 
    
    trucATester + 1
    
Next n 
Norm = ElapsedMilliseconds() - temp 
MessageRequester("Norm1", Str(Norm) + " - " + Str(trucATester))  
Delay(1) ; ******************************************************************** 3 
temp = ElapsedMilliseconds() 
For n = 1 To 100000000 
    
    trucATester + 1
    
Next n 
Opti = ElapsedMilliseconds() - temp 
MessageRequester("Opti1", Str(Opti) + " - " + Str(trucATester)) 
Bref pas très fiable ce bench 
 
Sauf si les différences d'exécution se comptent en secondes (ou en heures 

)
Bye.
 
			 
			
					
				
				Publié : sam. 16/mai/2009 17:51
				par cha0s
				peut etre que avec ceci les test seront plus précis
Code : Tout sélectionner
Procedure.q ElapsedCycles()
  !rdtsc 
  ProcedureReturn 
EndProcedure