Sono possibili altri esperimenti su Scratch 3 per indagare sulle potenzialità di calcolo link1.risultati1

Si è visto con l'articolo "La velocità di calcolo di Scratch 3, parte A" quale sia l'impostrazione del programma:

- in funzionamento normale viene privilegiata la sua vocazione per le animazioni per cui si sincronizza la grafica con il framerate della riproduzione video di 30fps;

- la sincronizzazione grafica pare venga attuata per mezzo dei comandi di controllo, quelli arancione;

- la modalità turbo elimina la sincronizzazione grafica ma non impone attese per ilproseguimento dei calcoli che così diventano rapidi per quanto consentito da un programma interprete.

Un secondo progetto può aiutare a conoscere con più profondità alcune caratteristiche di velocità di computazione di Scratch3.

I valori di durata ricavati fanno riferimento all'uso della versione online.

Gli esperimenti prevedono una rotazione di 7 gradi da ripetere 200 volte con modalità diverse e con o senza grafica da disegnare nelle fasi intermedie. 

Se viene aggiornata la grafica ad ogni iterazione allora il ritmo è quello del framerate di Scratch cioè 30 fps che significa una durata di un frame di 1/30 = 0,033 s per cui ci si attende che 200 frame durino 200*0,033 = 6,6 s.

A scopo di controllo si aggiungono alcuni esperimenti che prevedono anche più calcoli matematici con operatori trascendenti giusto per complicare il processo.

set timerLo sprite parte dalla direzione 0 gradi per cui con 200 rotazioni di 7 gradi ciascuna la direzione finale dello sprite sarà di 1400 gradi che significa una posizione finale a 320 gradi o -40 gradi.

L'unica vera indagine riguarda la durata rappresentata dalla variabile "timex".

Immediatamente prima dell'esperimento il cronometro viene azzerato; il valore del cronometro entra nella variabile timex appena terminate le 200 ripetizioni.

Nota: sembra che il cronometro di Scratch non sia in grado di fornire valori più piccoli del millisecondo per cui risulterà zero se la durata è inferiore al millisecondo.

Siccome c'è modo e modo di realizzare le ripetizioni, queste vengono richiamate con i tasti numerici.

 

Risultati dell'esperimento in modalità normale lato editor.

[tasto 1]: durata 0 millisecondi per ripetere in sequenza, senza l'uso di blocchi di controllo, 200 calcoli di rotazioni ma senza che la grafica venga interessata; non si vede la rotazione dello sprite, si vede solo la posizione finale;

[tasto 2]: durata 6.69 s per ripetere 20 volte 10 rotazioni con un blocco di attesa di 0 secondi che impone la sincronizzazione della grafica consentendo di vedere la rotazione; 

[tasto 3]: durata 6,674 s per ripetere 200 con un blocco di reiterazione che evidentemente sincronizza la grafica;

[tasto 4]: durata 6,67 s per ripetere 4 volte in sequenza 50 iterazioni di rotazione; il tempo è leggermente superiore forse perché Scratch deve reimpostare 4 volte la reiterazione;

[tasto 5]: durata 0,675 per ripetere 20 volte una sequanza di 10 rotazioni; lo sprite gira più rapidamente perchè la grafica viene aggikornata solo al temine della sequenza da reiterare quindi ogni 70 gradi; la singola iterazione dura comunque 0,675/20 = 0,03325 s;

[tasto 6]: durata 6,69 s per ripetere 200 rotazioni con blocco di reiterazione ed anche un blocco di attesa di 0 secondi.

Cosa succede se oltre ad una rotazione si imposta una sequenza di calcoli che fanno uso di diverse operazioni?calcola

[tasto 7]: durata 0 s per ripetere 200 volte un calcolo senza alcuna modifica della grafica; la rotazione è nulla perché non è stata inserita nella iterazione di calcolo;

[tasto 8]: durata 6,681 s per ripetere 200 volte un calcolo con l'aggiornamento della posizione dello sprite;

[tasto 9]: durata 0 s per esequire una sequenza di 200 calcoli con rotazione; dato che la sequenza non contiene blocchi di controllo, la rotazione non viene visualizzata e si vede solo la posizione finale.

 

Risultati dell'esperimento in modalità normale lato player.

I risultati sono paragonabili ai precedenti.

 

Risultati dell'esperimento in modalità turbo lato editor.

Sempre 0 secondi di durata. 

I blocchi di controllo vengono disabilitati nella loro funzione di sincronizzazione.