Sono possibili altri esperimenti su Scratch 3 per indagare sulle potenzialità di calcolo .
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.
Lo 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?
[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.