Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perl Tk sur neo FreeRunner

1 réponse
Avatar
Abb
Bonjour,

J'ai découvert le Neo FreeRunner, et en y installant une débian, j'ai
ressorti mon perl-tk. Pratique pour une rapide interface graphique mais
dès que je veux un peu m'amuser, c'est lent...

J'ai fait un petit programme (pas des plus optimisé, j'en conviens) qui
fait bouger à l'écran 10 boule noir qui descendent et 10 blanches qui
montent et qui s'entrechoquent.
Le tout me paraît bien lent.

Un premier point de lenteur pourrait être le fait que je déplace une a
une chaque boule avec un $canevas->coord , et je suppose que Tk
raffraichit l'écran à chaque fois.
Est-il possible d'arrêter le rafraichissement (?) d'enchainer une série
de coord (ou de move) et de rafraichir après (update si je ne me trompe) ?

Merci

AlainBB

1 réponse

Avatar
Paul Gaborit
À (at) Thu, 18 Dec 2008 18:23:37 +0100,
Abb écrivait (wrote):
J'ai fait un petit programme (pas des plus optimisé, j'en conviens)
qui fait bouger à l'écran 10 boule noir qui descendent et 10 blanches
qui montent et qui s'entrechoquent.
Le tout me paraît bien lent.



Pas optimisé => Lent. Jusque là, ok. ;-)

Un premier point de lenteur pourrait être le fait que je déplace une a
une chaque boule avec un $canevas->coord , et je suppose que Tk
raffraichit l'écran à chaque fois.



A priori, Tk rafraichit l'écran au prochain appel à la méthode
'update' ou lors du prochain passage dans la boucle générale. Mais Tk
peut décider de le faire plus tôt...

Est-il possible d'arrêter le rafraichissement (?) d'enchainer une
série de coord (ou de move) et de rafraichir après (update si je ne me
trompe) ?



Non... sauf peut-être en cachant le Tk::Canvas mais je doute qu'on
gagne en performance.

Si vous voulez vraiment un truc rapide pour ce genre de graphisme,
utilisez 'feu' Tk::Zinc ou alors d'autres modules d'interface
graphique (Gtk, OpenGL, etc.).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/&gt;
Perl en français - <http://perl.enstimac.fr/&gt;