ciao ragazzi, mi sono imbattuto in una vecchia discussione (gennaio 2004) e mi è tornato in mente di postare questo codice che volevo postare un po' di tempo fa.
Confesso di aver quasi sempre usato il random() invece che il Math.random() (specie per esperimenti personali) per due motivi, il primo semplice abitudine, il secodno è che il random() vecchio stile mi è sempre sembrato un po' + performante, anche se non avevo mai fatto dei test precisi.
Ora aprite flash e buttate giù questo codice sul primo frame (io uso flash MX, gradirei anche i test di utenti di MX 2004); tale codice non fa altro che generare 300mila numeri casuali e tracciare quanto tempo (in millisec) ha impiegato per farlo:
a me outputta 5163 ovvero 5.163 secondicodice:for (var i = 0; i <= 300000; i++) { var a = random(100); } trace(getTimer());
ora provate questo:
outputta 9840 ovvero 9.84 secondicodice:for (var i = 0; i <= 300000; i++) { var a = Math.ceil(Math.random()*100); } trace(getTimer());
___________________________________________
ora capisco il discorso che continuare ad usare il random() sia un po' un rischio (anche se a dire il vero penso che sarà compreso anche dal flash player 16) ma il Math.random() impiega il DOPPIO per fare la stessa cosa...
lo so che ci sono due operazioni in più (il ceil e la moltiplicazione) ma visto che la stragrande maggioranza delle volte quando si vuole un numero casuale lo si vuole intero... vi pare? inoltre anche togliendo il ceil (o il round che impiega ancora un pelo di +) è cmq sensibilmente + lento (outputta 7509) e anche togliendo la moltiplicazione è quasi uguale
Inoltre, in programmi semplici dove servono giusto un paio di estrazioni non penso che la differenza si veda, ma in esempi + complessi avere il doppio della velocità penso che non faccia schifo
Per concludere, la mia domanda è: qualcuno è riuscito a capire (o a trovare) il motivo per cui il random sia stato deprecato? io ho cercato in rete ma al massimo si trova quello che si trovava 3 anni fa, ovvero tanti bei blog che a catena citano: "basta, smettete di usarlo che è male"

Rispondi quotando



