Come funziona in javascript l'accesso alle variabili dell'array

flavio fachin

Nuovo Utente
3 Gen 2018
6
0
1
45
Sto cercando di capire meglio come funzione il motore javascript per eseguire l’accesso allínterno delle variabili di un array.


Le variabili di js non sono tipizzate, ma se ho capito bene, con il metodo sort() si può aggiungere un indice per avere un accesso ordinato all’array.


Ora, se le variabili fossero tipizzate, quando si venisse ad aggiungere nel codice:” arr[12]”, il motore per trovare l’indirizzo invocato, essenzialmente farebbe il calcolo: “indirizzo array + (numero di bit del dato * 12); invece su di un array non tipizzato ma ordinato con il metodo sort, il motore (utilizzando il principio precedentemente esposto, presumo e spero) troverebbe il dodicesimo elemento dell’indice, utilizzando poi questo come indirizzo per reperire il dato ricercato.


Ho fatto in BenchMark la seguente prova:


Inizializzazione test:

Codice:
        var arr=[];

        for (var i=0;i<1000;++i){

            arr=i;

        }

        arr.sort();


        var ran=[];

        for (var i=0;i<1000;++i){

            ran=1;

        }




loop 1:

        for (var i=1;i<998;i+=2){

            ran+=ran[i-1];

        }



loop 2:


        for (var i=1;i<998;i+=2){

            arr[ran]+=arr[ran[i-1]];

        }
Il precedente test somma due numeri: la prima volta contenuti sequenzialmente in un array; la seconda il posizioni discontinue, il risultato è che il primo loop impiega solamente il 3% di tempo rispetto il primo!


Il risultato mi lascia sospettare che il motore js, invece, reperisca i dati goffamente, confrontando tutti i valori delle chiavi rispetto la richiesta presentata nel codice, anche quando i dati sono numerici e ordinati!


In sostanza: 1)come è la storia al di là delle mie ipotesi e, ancora, 2) esiste per caso nelle librerie js un qualche oggetto array tipizzato?
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.312
334
83
Ciao Caro Flavio purtroppo ti devo ricordare che da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Il codice te lo sistemo io ma mi raccomando per il futuro