Io lavoro su un'applicazione Web che riceve dati JSON con nomi di proprietà maiuscole. Ho bisogno che quei nomi di proprietà siano in minuscolo, quindi sto usando una funzione per ricorrere ricorsivamente attraverso l'oggetto JSON e convertirli in lettere minuscole.Ottimizzazione del codice JavaScript che mette in minuscolo i nomi di proprietà JSON
Il problema è che le mie risposte JSON possono diventare molto grandi. Voglio che la funzione funzioni bene anche se deve elaborare JSON con 60.000 nomi di proprietà e vari livelli di nidificazione.
La funzione lettere minuscole è:
FN = function (obj)
{var ret = null;
if (typeof(obj) == "string" || typeof(obj) == "number")
return obj;
else if (obj.push)
ret = [];
else
ret = {};
for (var key in obj)
ret[String(key).toLowerCase()] = FN(obj[key]);
return ret;
};
E io l'esecuzione di alcune analisi comparativa qui: http://jsfiddle.net/emw89/7/
Gli orologi di prova di cui sopra in a ~ 570MS sulla mia macchina.
C'è qualcosa che posso fare per migliorare le prestazioni di questa funzione?
Modifica: ho chiuso il mio IE, ho riaperto IE e ho eseguito nuovamente il benchmark jsfiddle - ora è arrivato a ~ 180ms per me. Il mio IE era rimasto aperto per un paio di giorni consecutivi fino a quel momento, quindi forse questo è ciò che ha causato una performance così scarsa. Ad ogni modo, sono ancora interessato se c'è un modo per ottimizzare ulteriormente questa funzione. Ogni volta che il tempo trascorso in più per l'elaborazione di JSON aggiunge direttamente al tempo trascorso di ogni richiesta AJAX.
compie intorno ~ 150 ms per me – JKirchartz
78ms - IE9. Evviva per la CPU i7. Chrome sembra circa il 30% più lento. Tutta la spesa è nella ricorsione, quindi non sono sicuro che ci sia molto altro da fare. –
Due parole: [Chrome Frame] (http://code.google.com/intl/de-DE/chrome/chromeframe/) –