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
» Logiciel de planétarium.
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
TRIGONOMETRIE CIRCULAIRE - Page 3 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -38%
Ecran PC gaming 23,8″ – ACER KG241Y P3bip ...
Voir le deal
99.99 €

 

 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 : 52
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 : 7017
Age : 74
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 : 12331
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 : 7112
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 : 12331
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 : 7112
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 : 52
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 : 12331
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 : 72
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 : 970
Age : 52
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 : 72
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: