Chapeau 1.0
Par David Feugey le lundi 3 novembre 2008, 20:29 - Goodies - Lien permanent
Ce programme trace une courbe de Bessel en 3D. Il effectue près de 29.200
calculs de points, 58.200 sinus, 29.198 racines carrées et autres opérations en
virgules flottantes.
Sous BeOS en BCC
(Sony Vaio PGC-F403, Pentium III cadencé à 450 MHz)
- Version 1.0 (méthode = tracé direct) : 45 secondes.
- Version 1.1 (méthode = blit "astucieux") : 28 secondes.
- Version 1.2 (méthode = blit + nouvelle version du compilateur) : 13 secondes.
- Version 1.3 (méthode = buffer) : < 3,7 secondes.
- Version 1.4 (méthode = buffer + commande RefreshMode) : 750 ms (commande time).
- Version 1.5 (méthode = buffer + commande RefreshMode) : <=170 ms (microtimer).
En fait, il n'y a pas d'accélération entre la version 1.4 et la 1.5, mais
la façon de mesurer le temps écoulé est nettement plus précise (nous ne comptons
plus les temps de chargement et de création de la fenêtre, mais seulement les
temps de calcul et affichage).
À partir de cette version, le seul moyen
d'augmenter la vitesse est d'augmenter celle du compilateur ou de diminuer la
taille du code (afin de lui permettre de loger facilement dans la mémoire cache
du processeur).
Le test reste conforme à l'original : il faut charger le
programme, calculer et afficher le dessin et mesurer le temps écoulé. Par
contre, le dessin n'est pas affiché point par point, mais dans un buffer recopié ensuite à l'écran.
Sous Epoc32 en OPL (Psion Series 5 - 8 Mo)
:
- 10 minutes 23 secondes. Résultats obtenus à l'aide des fonctions de double buffering.
Le record historique était détenu par un RiscPC StrongArm 202 MHz, sous
BBC Basic V (interprété) avec 1,53 seconde en mode 256 couleurs ou
inférieur.
Pour information voilà le code
source d'origine :
MODE
MODE
CLG
TIME=0
K=PI*1.5/144
FOR I=-100 TO 99
IF I>-64 AND
I<64 THEN
A=I*2.25
B=SQR(20736-A*A)+0.5
FOR J=-B TO
B
C=K*SQR(J*J+A*A)
D=(SIN(C)+0.4*SIN(C*3))*56
X=820-((J+I+160)+10)*2
Y=400+((D-I+100)+30)*2
GCOL
8
POINT X,Y
GCOL 0
LINE X, Y-1, X,Y-20
NEXT J
ENDIF
NEXT I
PRINT "Temps du calcul : ";TIME/100;" s. Qui
dit mieux ?"
L'auteur en est
Jean Pierre Weber, que nous remercions pour cette excellente idée de
test. Notez enfin qu'une version Java avait également été créée par nos
soins. Elle a cependant été perdue depuis.

