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:
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?
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 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: