PureBasic

Forums PureBasic
Nous sommes le Dim 26/Mai/2013 6:33

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 89 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6  Suivante
Auteur Message
 Sujet du message:
MessagePosté: Mar 07/Avr/2009 13:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
Fortix a écrit:
Salut, je n'ais pas parcourru de A à Z ce topic mais j'ais compris Grosso Modo de quoi ça parle :lol:

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 ;) ---->
Citation:
il est donc prudent de lancer un sondage au préalable, et si il y a "une allimité" (c'est bien écrit :oops: ) mettre au point une forme de présentation dite "universelle"

_________________
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Mer 08/Avr/2009 15:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 30/Mai/2006 17:03
Messages: 519
:lol: pas la peine de s'énerver :lol:

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 :lol: )

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


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Mer 08/Avr/2009 16:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
Fortix a écrit:
:lol: pas la peine de s'énerver :lol:


oui c'est sur ! :)

_________________
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Sam 25/Avr/2009 21:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Juin/2007 17:50
Messages: 1901
Au lieu d'écrire
Code:
If Condition1 And Condition2
   ...
EndIf

Il est plus rapide à l'exécution d'écrire
Code:
If Condition1
   If Condition2
      ...
   EndIf
EndIf

... Et de placer en Condition1 la plus condition qui sera estimée le plus souvent fausse.


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Sam 25/Avr/2009 23:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 05/Mar/2005 16:09
Messages: 681
Ollivier a écrit:
Au lieu d'écrire
Code:
If Condition1 And Condition2
   ...
EndIf

Il est plus rapide à l'exécution d'écrire
Code:
If Condition1
   If Condition2
      ...
   EndIf
EndIf




ceci me prouve le contraire

Code:
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

_________________
Doujin-Spirit
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 26/Avr/2009 1:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Juin/2007 17:50
Messages: 1901
@ChaOs Si, si : j'insiste: 30% de gain ici !
Code:
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) )



Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 26/Avr/2009 8:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Juin/2007 17:50
Messages: 1901
Dans le prolongement booléen de cette banane, voici un autre code
Code:
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:
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


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 26/Avr/2009 13:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 05/Mar/2005 16:09
Messages: 681
@Olivier : exacte le debugeur fausse les résultats mais pour avoir des tests vraiment pointue faudrait voir le nombre de cycle utilisé.

_________________
Doujin-Spirit
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 26/Avr/2009 13:47 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 204
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:
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+


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 26/Avr/2009 14:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 05/Mar/2005 16:09
Messages: 681
dans le cas ou il y a beaucoup de test, privilégier le select peut être un plus

Code:
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))

_________________
Doujin-Spirit
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Ven 01/Mai/2009 19:59 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 31/Oct/2008 16:51
Messages: 110
Localisation: Vertou (44)
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:
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 ?

_________________
==> http://radio-jnt.new.fr/ <==


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Ven 01/Mai/2009 20:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12959
non pas possible actuellement , peut etre la prochaine version :)

_________________
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Mar 12/Mai/2009 18:03 
Hors ligne

Inscription: Dim 05/Juin/2005 20:27
Messages: 274
select case ... est plus rapide que if ... elseif ... ?

bizarre j'ai le contraire (debuggeur desactivé):
859 le 1er
813 le 2nd (if ...)


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Ven 15/Mai/2009 15:35 
Hors ligne

Inscription: Dim 23/Déc/2007 18:10
Messages: 471
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 :wink:
Code:
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 :cry:
Sauf si les différences d'exécution se comptent en secondes (ou en heures :lol:)

Bye.


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Sam 16/Mai/2009 17:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 05/Mar/2005 16:09
Messages: 681
peut etre que avec ceci les test seront plus précis

Code:
Procedure.q ElapsedCycles()
  !rdtsc
  ProcedureReturn
EndProcedure

_________________
Doujin-Spirit
Image


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 89 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye