FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
 - TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

 

 TRIGONOMETRIE CIRCULAIRE

Aller en bas 
+8
JL35
Nardo26
sergeauze
pascal10000
Jean Claude
Jicehel
Minibug
papydall
12 participants
Aller à la page : Précédent  1, 2, 3
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 15:28

Il est interprété, il faudrait aussi faire le test avec une version compilée pour avoir un ordre d'idée complet
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 17:19

Optimisez le code pour le rendre plus rapide (pas nécessairement plus court !)
La boucle FOR / NEXT est très gourmande en temps d’exécution, évitez-la si vous pouvez.
L’exemple suivant montre la différence de temps d’une boucle FOR/NEXT exécutée 1000 fois sur un tableau de 11 éléments et d’une affectation directe du même tableau 1000 fois.
Pour moi, le ratio de performance est aux alentours de 2 : 1

Code:

dim result,start_time,end_time,final_time ,time_for,time_affectation

dll_on "kernel32"
Test_For(1000)
Test_Affectatation(1000)

END
rem ============================================================================
SUB get_time()
 Â  result = dll_call0("GetTickCount")
END_SUB
rem ============================================================================
SUB Test_For(n)
 Â   dim_local i,j,tabl(10)
 Â   get_time() : start_time = result
 Â   for i = 1 to n
 Â       for j = 0 to 10 : tabl(j) = j : next j
 Â   next i
 Â   get_time() : end_time = result
 Â   time_for = end_time - start_time
 Â   print "Durée Boucle FOR     : " + str$(time_for) + " ms"
END_SUB
rem ============================================================================
SUB Test_Affectatation(n)
 Â   dim_local i,j,tabl(10)
 Â   get_time() : start_time = result
 Â   repeat
 Â       tabl(0) = 0
 Â       tabl(1) = 1
 Â       tabl(2) = 2
 Â       tabl(3) = 3
 Â       tabl(4) = 4
 Â       tabl(5) = 5
 Â       tabl(6) = 6
 Â       tabl(7) = 7
 Â       tabl(8) = 8
 Â       tabl(9) = 9
 Â       tabl(10) = 10
 Â       i = i + 1
 Â   until i = n
 Â   get_time() : end_time = result
 Â   time_affectation = end_time - start_time
 Â   print "Durée Affectation    : " + str$(time_affectation) + " ms"
 Â   print "Ratio de performance : " + str$(time_for / time_affectation)
END_SUB
rem ============================================================================

Autre optimisation :

Si vous utilisez dans votre code beaucoup de calculs de SIN(a) et COS(a), vous gagnerez beaucoup en terme de rapidité en calculant dès le début tous les SIN / COS de 0 à 360° dans  deux tableaux SINUS(360) et COSINUS(360).
En effet l’accès à un tableau en mémoire est beaucoup plus rapide qu’un calcul trigonométrique.
Désormais, dans vos instructions, vous ferez appel au tableau SINUS(a) ou COSINUS(a) avec a en degré et c’est beaucoup plus rapide que le calcul de SIN et de COS

Code:

rem ============================================================================
dim a,pi,rad
dim sinus(360),cosinus(360) : ' tableaux pour stocker sin et cos
pi = acos(-1) : rad = pi/180
for a = 0 to 360
 Â   sinus(a) = sin(a*rad) : cosinus(a) = cos(a*rad)
next a
rem ============================================================================

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 17:32

Excellente idée, Papydall, que de créer ces tableaux de valeurs des fonctions trigonométriques !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 19:28

Dans mon exemple page précédente (rotation) je remarque que dans les deux boucles imbriquées, pour chaque pixel je fais intervenir deux fois SIN(ra) et deux fois COS(ra), ce qui est idiot, il suffit de les calculer une fois pour toutes.

J'ai donc remplacé par des constantes calculées une fois pour toutes avant la double boucle, sra et cra, mais le gain de temps n'est pas spectaculaire: 27 secondes au lieu de 31... et j'avoue que j'ai été un peu déçu du résultat... Sad
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 19:31

Et si, comme le suggère Papydall, tu calculais toutes ces valeurs une fois pour toutes, au démarrage, pour les déposer dans un tableau ? Je fais ceci:
Code:
dim t1$, t2$, t3$
dim sinus(10), pi, v, i%

pi = 4 * atn(1)
sinus(10) = sin(10*pi/180)

t1$ = time$
for i%=1 to 100000
  v = sin(10*pi/180)
next i%
t2$ = time$
for i%=1 to 100000
  v = sinus(10)
next i%
t3$ = time$

print t1$
print t2$
print t3$

end
La première boucle met 9 secondes, chez moi, et la seconde 6 secondes. La différence, c'est le remplacement de la fonction trigonométrique par un élément d'un tableau.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 22:00

Je vois bien la suggestion de papydall qui est ingénieuse, mais dans mon exemple à moi c'est le sinus et le cosinus du MÊME angle alpha, qui est l'angle de rotation de l'image, que je répétais dans la double boucle, et que j'ai remplacés par deux constantes sra = SIN(alpha) et cra = COS(alpha).

Et je constate que le fait de remplacer deux fois SIN et deux fois COS par pixel pivoté par deux constantes ne fait pas une différence très significative en temps (~10%), je m'attendais à plus.

C'est le reste du traitement qui est très long, mais c'est vrai que c'est de l'interprété, il faudrait voir avec du vrai compilé.
(la même opération avec nconvert.exe met moins d'1s au lieu de 30s en panoramic).
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 22:20

A peu de chose prêt, j'ai fais le test de Klaus et je passe de 24s à 14s en utilisant le tableau avec le code ci dessous
Code:
dim t1$, t2$, t3$
dim sinus(360), pi, v, i%,j%, rad

pi = 4 * atn(1) : rad = pi/180
for i% = 1 to 360
    sinus(i%) = sin(i% * rad)
next i%

t1$ = time$
for j% = 1 to 1000
  for i%=1 to 360
      v = sin(i% * rad)
  next i%
next j%
t2$ = time$
for j% = 1 to 1000
  for i%=1 to 360
    v = sinus(i%)
  next i%
next j%
t3$ = time$

print t1$
print t2$
print t3$

end
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyDim 12 Juil 2015 - 22:44

C'est ça. Environ un tiers d'économie.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
sergeauze

sergeauze


Nombre de messages : 391
Age : 71
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyLun 13 Juil 2015 - 0:52

je  voulais  tester avec  2d_image_copy/2d_image_paste
Mais  même  avec d'anciens codes  ça ne marche plus chez moi correctement
Peut_être un effet de la canicule sur mon esprit fatigué Suspect
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyLun 13 Juil 2015 - 6:46

Il est évident que panoramic n'a pas été conçu pour être véloce; Il ne faut pas se leurrer, "on ne fera jamais d'un âne un cheval de course!"
Revenir en haut Aller en bas
sergeauze

sergeauze


Nombre de messages : 391
Age : 71
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 EmptyLun 13 Juil 2015 - 12:00

Je préfère l’histoire du lièvre et et de la tortue :
avec Panoramic  j'ai appris à me hâter lentement
Exemple le pb que j'avais plus  haut  :un "Wait" judicieusement  placé
et le voila résolu
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
Contenu sponsorisé





 - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty
MessageSujet: Re: TRIGONOMETRIE CIRCULAIRE    - TRIGONOMETRIE CIRCULAIRE - Page 3 Empty

Revenir en haut Aller en bas
 
TRIGONOMETRIE CIRCULAIRE
Revenir en haut 
Page 3 sur 3Aller à la page : Précédent  1, 2, 3
 Sujets similaires
-
» Trigonométrie circulaire et hyperbolique
» Premier pas en trigonométrie
» track_bar circulaire
» Un menu sympa et original de forme circulaire

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: