purebasic vs blitz

Sujets variés concernant le développement en PureBasic
kamelito
Messages : 5
Inscription : mer. 11/mai/2005 23:04

purebasic vs blitz

Message par kamelito »

salut

ca vaut ce que ca vaut mais j'ai regardé deux meme prog sur PB et BB (rasters de unkof)

Resultat:

BB :

taille exe : 1264ko
temps cpu : entre 74 et 92 (souvent à 88 )
memoire utilisée : 5912ko

PB:

taille exe : 103ko
temps cpu : entre 81 et 96 (souvent 94)
memoire utilisée 2868ko

si qq'un a une routine afficher le framerate je suis preneur.

Info : impossible de s'incrire à ce forum sous Firefox, à chaque fois il me dit que le code de validation n'est pas bon (et non je n'ai pas des pb de vue :))
/kml
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: purebasic vs blitz

Message par comtois »

kamelito a écrit :Info : impossible de s'incrire à ce forum sous Firefox, à chaque fois il me dit que le code de validation n'est pas bon (et non je n'ai pas des pb de vue :))

J'utilise Firefox , et je n'ai pas de problème.

pour la CPU , tu peux mettre un delay(10) dans la boucle pour la libérer , c'est à toi de voir.
pour le framerate il y a des exemples un peu partout , notamment sur
http://www.purearea.net

exemple

Code : Tout sélectionner

; English forum: 
; Author: waffle
; Date: 29. May 2003

; Example for calculating the actual FrameRate
; This code does NOT run directly, it must be included in the main loop of your own program/game...
TimeDelay.l=100 
MasterTimer.l=ElapsedMilliseconds() 
;game loop 
Repeat 
  FlipBuffers() 
  ;and other code... 
  
  TimeDelay=ElapsedMilliseconds()-MasterTimer 
  MasterTimer=ElapsedMilliseconds() 
  FrameRate.f=1000/TimeDelay 
Until quit
ou alors

Code : Tout sélectionner

Temps = ElapsedMilliseconds()  
repeat
  ;/Calcul le temps d'affichage d'une image 
  If ElapsedMilliseconds()-Temps>1000
  Temps = ElapsedMilliseconds()  
  Delta=1000.0/FPS
  FPS=0
  Else
  FPS+1
  EndIf

Flipbuffer()
until ....
kamelito
Messages : 5
Inscription : mer. 11/mai/2005 23:04

Re: purebasic vs blitz

Message par kamelito »

Salut

>J'utilise Firefox , et je n'ai pas de problème.

Moi non plus une fois le compte crée sous IE, c'est la création qui ne marche pas.

>pour la CPU , tu peux mettre un delay(10) dans la boucle pour la libérer , >c'est à toi de voir.
>pour le framerate il y a des exemples un peu partout , notamment sur
>http://www.purearea.net


Merci, c'est difficle à voir, mais avec un delay de 100 milliseconds j'ai 9 images/s donc 90 sans delay.
/kml
kamelito
Messages : 5
Inscription : mer. 11/mai/2005 23:04

Re: purebasic vs blitz

Message par kamelito »

Re

Je trouve pas logique que pour afficher du texte dans un screen il faille faire startdrawing()/stopdrawing().
Pourquoi est-ce nécessaire? Il me semble logique que si je fais un drawtext() ca sera pour le screen que je viens d'ouvrir...

Don't you think ? (ca rajoute de l'overhead pas nécessaire IMHO)
/kml
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Pourquoi est-ce nécessaire? Il me semble logique que si je fais un drawtext() ca sera pour le screen que je viens d'ouvrir...
Ou pour un sprite, ou une image, ou une fenêtre, ou une texture (je crois que c'est tout^^).
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

dans startdrawing() tu précises sur quelle surface tu écris ou dessine .
ça peut être l'écran , un sprite , une image, l'imprimante, une fenêtre , une texture .
Tu vois que c'est quand même utile de savoir ce que tu veux faire :)
kamelito
Messages : 5
Inscription : mer. 11/mai/2005 23:04

Message par kamelito »

Salut

Je comprends mieux maintenant merci, mais je trouve tjs pas ca logique de prime abord. Il aurait été dans ce cas plus logique de rajouter un paramètre pour spécifier l'output et par défaut prend l'écran ou la fenêtre ouverte :)

Je sais j'aime pas admettre que j'ai tort ;)


comtois a écrit :dans startdrawing() tu précises sur quelle surface tu écris ou dessine .
ça peut être l'écran , un sprite , une image, l'imprimante, une fenêtre , une texture .
Tu vois que c'est quand même utile de savoir ce que tu veux faire :)
/kml
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

c'est parce que les fonctions de dessin sont relativement bas niveau... l'idée c'est de faire un startdrawing pour l'élément sur lequel tu veux dessiner, de faire tous tes tracés, et d'arrêter de dessiner... Parce que le start/stop bouffe quand même un peu de temps...

Dri
kamelito
Messages : 5
Inscription : mer. 11/mai/2005 23:04

Message par kamelito »

Dr. Dri a écrit :c'est parce que les fonctions de dessin sont relativement bas niveau... l'idée c'est de faire un startdrawing pour l'élément sur lequel tu veux dessiner, de faire tous tes tracés, et d'arrêter de dessiner... Parce que le start/stop bouffe quand même un peu de temps...

Dri
Justement c'est ce que je voulais dire en qq sorte ca bouffe du temps pas nécessaire selon moi. Enfin j'ai pas mesurer l'overhead mais ca fait qd meme deux sous routines en plus. Or si tu dis ok je veux afficher sur l'écran, tu récupéres le pointeur bien avant de tracer et pas besoin de stardrawing/stopdrawing dans ta boucle principale. Pour ce qui est de l'affichage dans une fenetre c'est pas génant mais si tu fais une démo ou un jeu t'y perds IHMO.
/kml
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

A mon avis, Fred a choisi la solution la plus simple et la plus rapide...
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Startdrawing() initialise ... euh... plein de choses (je connais pas les détails, mais on accède pas à la mémoire vidéo aussi simplement qu'à la ram), et stopdrawing() rend la surface à nouveau disponible pour une utilisation normale.
Ça évite de faire tout ça à chaque fois qu'une commande de dessin est appelée.

En tout cas, c'est ce que j'ai compris. :roll:
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

filperj a écrit :Startdrawing() initialise ... euh... plein de choses (je connais pas les détails, mais on accède pas à la mémoire vidéo aussi simplement qu'à la ram), et stopdrawing() rend la surface à nouveau disponible pour une utilisation normale.
Ça évite de faire tout ça à chaque fois qu'une commande de dessin est appelée.

En tout cas, c'est ce que j'ai compris. :roll:
exactement, si en blitz tu n'as pas de telle fonction, c'est probablement parce qu'elles sont exécutées de facon transparente avec chaque fonction de "dessin"

Dri
Répondre