Ce sujet est résolu.
1 | |||
Auteur | Messages | ||
---|---|---|---|
stracoma | #1 Posté le 29/8/2015 à 20:22:49 | ||
Apprentissage programmation pour le plaisir | Bonjour. Je vous sollicite car j'ai un problème avec le timer. Mon programme nécessite une fenêtre, un panel et 2 timers. Voilà mon code:
Pour voir grandir vite mon panel: Timer.Delay = 1 . C'est la plus grande fréquence que j'ai trouvée. Quand je veux faire plus, je donne la valeur 0.5 au Timer.Delay, là, le panel augmente moins vite! je ne comprends pas. Merci SVP patience avec moi car neurones > 50 ans | ||
Foromus | #2 Posté le 29/8/2015 à 22:24:38 | ||
Bonsoir, A tout hasard, j'ai cru remarquer que, en dessous de delay= 10, ça fait n'importe quoi... Au passage, j'ai aussi remarqué que, lorsque le système est un peu sollicité, par exemple, en affichant une barre de progression, l'affichage se bloque, et la barre n'avance plus, bien que le processus se poursuit en interne. J'ai mis ça sur le compte du logiciel interprété (plutôt que compilé - hélas pas encore possible), mais je ne sais si le lien est adéquat. Je suppose que pour les timers, le raisonnement est le même, c'est pourquoi je rajoute ce complément qui est hors sujet en fait. Mais j'aimerais bien un avis plus éclairé !... | |||
vuott | #3 Posté le 29/8/2015 à 23:53:15 | ||
Ne cedere ineluctabili possimus | ...Timer.Delay = 1 . C'est la plus grande fréquence que j'ai trouvée. Quand je veux faire plus, je donne la valeur 0.5 au Timer.Delay, là, le panel augmente moins vite! je ne comprends pas. Bonsoir stracoma, 1 = milliseconds Il est la plus petite valeur possible ! « Vita non suavis esse potest, nec Mors amara. » | ||
stracoma | #4 Posté le 30/8/2015 à 00:13:06 | ||
Apprentissage programmation pour le plaisir |
donc pour remédier au problème:
SVP patience avec moi car neurones > 50 ans | ||
vuott | #5 Posté le 30/8/2015 à 03:34:45 | ||
Ne cedere ineluctabili possimus | Bonsoir stracoma, you could increase the speed a little by using Wait function together with the C external function usleep( ) , that suspends execution for microsecond intervals, and by replacing Timer objects with a While...Wend cycle.
« Vita non suavis esse potest, nec Mors amara. » | ||
stracoma | #6 Posté le 30/8/2015 à 13:32:54 | ||
Apprentissage programmation pour le plaisir | Merci vuot. je suis nul en anglais mais j'ai compris. j'ai donc refais le code:
SVP patience avec moi car neurones > 50 ans | ||
vuott | #7 Posté le 30/8/2015 à 14:06:46 | ||
Ne cedere ineluctabili possimus | j'ai donc refais le code Bonjour stracoma, ( Attention, je tente avec un traducteur en ligne: italiano -> français ) No, vous ne pouvez pas écrire Wait 0.0002, parce que dans Gambas la valeur minimale (la plus petite disponible) est de 1 milliseconde, c'est-à-dire Wait 0.001 Si tu écris Wait 0.0002, il est comme écrire Wait sans numéros. ...fais le test. « Vita non suavis esse potest, nec Mors amara. » | ||
stracoma | #8 Posté le 30/8/2015 à 15:33:47 | ||
Apprentissage programmation pour le plaisir |
j'ai refais le test avec un compteur en ms: pas de différence entre 0.001 et 0.0005. par contre il va plus vite avec0.0002, encore plus avec 0.0001 et encore plus avec Wait sans valeur
SVP patience avec moi car neurones > 50 ans | ||
vuott | #9 Posté le 30/8/2015 à 15:58:13 | ||
Ne cedere ineluctabili possimus | ... il va plus vite avec0.0002, encore plus avec 0.0001 et encore plus avec Wait sans valeur Je ne vois pas différences entre Wait solitaire et Wait avec des valeurs inférieures à 0.0005 À propos de l'égalité de vitesse entre Wait 0.001 et valeurs supérieures à Wait 0.0004, ces valeurs viennent arrondies probablement au supérieur décimal: c'est-à-dire 0.001 « Vita non suavis esse potest, nec Mors amara. » | ||
stracoma | #10 Posté le 30/8/2015 à 16:26:50 | ||
Apprentissage programmation pour le plaisir |
pourtant le chrono que j'ai mis dans le ValueBox le prouve SVP patience avec moi car neurones > 50 ans | ||
vuott | #11 Posté le 30/8/2015 à 17:59:34 | ||
Ne cedere ineluctabili possimus | ValueBox le prouve uhmmm.... je l'ai fait ce test: Je essayé votre code: 10 fois avec la valeur 0,0004. Les résultats ont été les suivants: 238 - 777 - 227 - 731 - 193 - 233 - 336 - 793 - 242 - 743 la moyenne était de: 451,3 10 fois avec une valeur 0,0001 271 - 771 - 180 - 222 - 331 - 838 - 585 - 197 - 137 - 788 la moyenne était de: 432,0 10 fois avec "Wait" solitaire: 345 - 745 - 260 - 225 - 257 - 181 - 109 - 197 - 225 - 139 la moyenne était de: 268,3 Probablement le code avec le attente solitaire est plus rapide, car il n'a pas à tenir compte des valeurs (même si elles sont sous-milliseconde) Mon Système d'exploitation: [System] Gambas=3.8.90 r7256 OperatingSystem=Linux Kernel=3.13.0-24-generic Architecture=x86_64 Distribution=Linux Mint 17.1 Rebecca Desktop=GNOME Memory=3953M « Vita non suavis esse potest, nec Mors amara. » | ||
stracoma | #12 Posté le 30/8/2015 à 18:16:54 | ||
Apprentissage programmation pour le plaisir | discussion fructueuse SVP patience avec moi car neurones > 50 ans | ||
vuott | #13 Posté le 30/8/2015 à 19:24:55 | ||
Ne cedere ineluctabili possimus | discussion fructueuse Sic est ! Bon, parce que la valeur minimum temporal est 1 milliseconde (ms 1) qu'il peut être assigné en Gambas, mon opinion est que nous avons deux seuils: Wait 0.001 et Wait solitaire. Je crois que nous pouvons contrôler la vitesse d'une manière plus adéquate entre ces deux seuils avec la fonction extérieur de C: usleep() . Toutefois, la nécessité de mettre Wait solitaire avec la fonction externe de C usleep(), - à mon humble avis - est une limite de Gambas. Bah ! De toute façon... « Vita non suavis esse potest, nec Mors amara. » | ||
stracoma | #14 Posté le 30/8/2015 à 21:18:11 | ||
Apprentissage programmation pour le plaisir | je dois aller voir la doc sur C: usleep() (jamais vu) SVP patience avec moi car neurones > 50 ans | ||
1 |