Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 51
  1. #1

    Math.random() e random() - osservazioni

    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:

    codice:
    for (var i = 0; i <= 300000; i++) {
    	var a = random(100);
    }
    trace(getTimer());
    a me outputta 5163 ovvero 5.163 secondi

    ora provate questo:

    codice:
    for (var i = 0; i <= 300000; i++) {
    	var a = Math.ceil(Math.random()*100);
    }
    trace(getTimer());
    outputta 9840 ovvero 9.84 secondi
    ___________________________________________

    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"
    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

  2. #2
    ma questo vale anche per altre funzioni, come quelle sulle stringhe. il buon vechio substring(stringa, indice, lung) è il doppio + veloce di String.substr()
    da tempo dico che codice deprecato significa quasi sempre + performante.


    p.s. in oltre non vedo nessun rischio... semmai è la MM stessa che rischia di chiudere il giorno che deciderà di non supportare vecchio codice nei nuovi lettori
    Free ActionScript Editor

    Y en silencio y sin cruzar una palabra
    solamente una mirada es suficiente para hablar

  3. #3
    Ciao concittadino

    secondo me dipende dalle prestazioni della macchina!
    ho fatto giusto ora dei test!
    con una macchina vado a 10382 circa + o - costante
    con l'altra vado a 3900 + o - costante



    primo esempio!
    Interactive Html/CSS/JS Playground | @webbeloz ( cip..cip! )
    Mechanics & Expert Tuning Fix Z3 Roadster Community

  4. #4
    x webbeloz: senz'altro dipende dal tuo processore, però che su una macchina un codice faccia 1000 e l'altro 2000 o che faccia 4000 e l'altro 8000 il rapporto è sempre lo stesso no?

    x flash_mx2: finalmente uno che è d'accordo con me. Inoltre mi fa piacere sapere che anche tu non lo consideri un rischio.
    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

  5. #5
    Originariamente inviato da panta
    x webbeloz: senz'altro dipende dal tuo processore, però che su una macchina un codice faccia 1000 e l'altro 2000 o che faccia 4000 e l'altro 8000 il rapporto è sempre lo stesso no?

    x flash_mx2: finalmente uno che è d'accordo con me. Inoltre mi fa piacere sapere che anche tu non lo consideri un rischio.
    daccordissimo!
    Interactive Html/CSS/JS Playground | @webbeloz ( cip..cip! )
    Mechanics & Expert Tuning Fix Z3 Roadster Community

  6. #6
    Originariamente inviato da panta
    x flash_mx2: finalmente uno che è d'accordo con me. Inoltre mi fa piacere sapere che anche tu non lo consideri un rischio.
    Pure io spesso uso ancora il random, tra l'altro è pure più comodo come 'sintassi' ... per le stringe invece uso substr e non substring più che altro per abitudine
    Comunque da un lato questo "non usare più random" è paragonabile a "As2 è figo e meglio di tutto", insomma operazioni diciamo 'di istruzione' , forse fatte proprio per avere la possibilità in futuro di non supportare questi comandi (anche se concordo con _mx2 nel dire che sarebbe una gran zappata sui piedi da parte della MM)

  7. #7
    prestazioni a parte io ho un p4 e mi da 5.9 col vecchio metodo e 11 col secondo.. è comunque il doppio

  8. #8
    sto scrivendo un sistema particellare (per cui di random ce n'è a iosa) e cambiando il random con quello nuovo (a parità di particelle) c'è da spararsi
    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

  9. #9
    c'è cmq da dire che usare random o math.random o substring al posto di substr è abb indifferente finchè ovviamente non c'è la necessità di ottimizzare al massimo le prestazioni dell'swf... come hai giustamente osservato per un sist particellare.

    cmq questo discorso già valeva per flash 5 come per flash mx...

    il player è sempre stato portato verso nuove prestazioni, ma a quanto pare il "vecchio" codice reagisce meglio
    Free ActionScript Editor

    Y en silencio y sin cruzar una palabra
    solamente una mirada es suficiente para hablar

  10. #10
    "come sappiamo al destino non manca il senso dell'umorismo"

    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.