<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Il salvataggio nel database è troppo lento (10.000 record al minuto) ha una risposta da parte di msharp che mi ha ricordato un miglioramento delle prestazioni programmato per JMP 13. (Grazie Jeff Polzin!)
Msharp afferma che la funzione di aggiornamento del database è più veloce di un'altra tecnica, ma comunque non eccezionale.(E vedi bryan.boone risposta anche alla domanda originale ... un altro miglioramento delle prestazioni di JMP 13.) Ho esaminato lo script (che è un modo intelligente per utilizzare JSL e SQL) e ho visto che aggiunge elementi alla fine di un elenco, qualcosa del genere:
// costruire in avanti
listainoltro = {};
starttime = Tick Secondi();
For( i = 0, i < 30000, i++,
Inserisci in( lista avanti, i )
);
stoptime = Tick Secondi();
Mostra (stoptime - starttime);
stoptime - starttime = 1.68333333334886; // JMP 12 volta
è molto lento in JMP 12 e versioni precedenti.L'elenco è contenuto internamente dal suo primo elemento e l'ultimo elemento deve essere scoperto percorrendo la lunghezza dell'elenco.InsertInto() aggiunge alla fine dell'elenco per impostazione predefinita. Ciò porta a prestazioni N^2: raddoppiando la lunghezza dell'elenco si quadruplica il tempo.C'è un modo per evitarlo:
// costruisce al contrario
listainversa = {};
starttime = Tick Secondi();
For( i = 0, i < 30000, i++,
Inserisci in( listainversa, i, 1 )
);
reverseList = Reverse( reverseList );
stoptime = Tick Secondi();
Mostra (stoptime - starttime);
stoptime - starttime = 0.0333333334419876;
così va meglio.La funzione insertinto() viene chiamata con un terzo argomento pari a 1 da inserire all'inizio dell'elenco.Si noti che anche la chiamata alla funzione reverse() viene contabilizzata nel tempo riportato.E la risposta è la stessa:
show(reverseList == forwardList);
reverseList == forwardList = 1; // bene, stessa risposta in entrambi i casi
Non vedi l'ora di JMP 13?Ecco qui:
// costruire in avanti
listainoltro = {};
starttime = Tick Secondi();
For( i = 0, i < 30000, i++,
Inserisci in( lista avanti, i )
);
stoptime = Tick Secondi();
Mostra (stoptime - starttime);
stoptime - starttime = 0.0166666668374091; // Jeff è fantastico!
Per farla breve, se si dispone di uno script JMP 12 che sta costruendo un elenco di più di 100 elementi circa, inserire all'inizio, quindi invertire.JMP 13 sarà veloce in entrambi i casi.