<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />L'enregistrement dans la base de données est trop lent (10 000 enregistrements par minute) a une réponse par msharp cela m'a rappelé une amélioration des performances prévue pour JMP 13. (Merci Jeff Polzin !)
Msharp mentionne que la fonction de mise à jour de la base de données est plus rapide qu'une autre technique, mais toujours pas géniale.(Et voir bryan.boone répondez également à la question initiale ... une autre amélioration des performances de JMP 13.) J'ai regardé le script (qui est une manière intelligente d'utiliser JSL et SQL) et j'ai vu qu'il ajoutait des éléments à la fin d'une liste, quelque chose comme ceci:
// construire en avant
forwardList = {} ;
starttime = Tick Seconds();
Pour( i = 0, i < 30000, i++,
Insérer dans (forwardList, je)
);
heure d'arrêt = Tick Seconds();
Afficher (heure d'arrêt - heure de début);
heure d'arrêt - heure de début = 1,68333333334886 ; // JMP 12 fois
c'est vraiment lent dans JMP 12 et versions antérieures.La liste est maintenue en interne par son premier élément, et le dernier élément doit être découvert en parcourant la longueur de la liste.InsertInto() ajoute à la fin de la liste par défaut. Cela conduit à des performances N^2 : doubler la longueur de la liste quadruple le temps.Il existe un moyen de l'éviter :
// construit à l'envers
reverseList = {} ;
starttime = Tick Seconds();
Pour( i = 0, i < 30000, i++,
Insérer dans( reverseList, i, 1 )
);
reverseList = Reverse( reverseList );
heure d'arrêt = Tick Seconds();
Afficher (heure d'arrêt - heure de début);
heure d'arrêt - heure de début = 0,0333333334419876 ;
c'est mieux.La fonction insertinto() est appelée avec un 3ème argument de 1 pour insérer au début de la liste.Notez que l'appel à la fonction reverse() est également pris en compte dans l'heure indiquée.Et la réponse est la même :
show( reverseList == forwardList);
reverseList == forwardList = 1; // bien, même réponse de toute façon
Vous attendez JMP 13 avec impatience ?C'est ici:
// construire en avant
forwardList = {} ;
starttime = Tick Seconds();
Pour( i = 0, i < 30000, i++,
Insérer dans (forwardList, je)
);
heure d'arrêt = Tick Seconds();
Afficher (heure d'arrêt - heure de début);
heure d'arrêt - heure de début = 0,0166666668374091 ; // Jeff est incroyable !
Pour faire court, si vous avez un script JMP 12 qui construit une liste de plus de 100 éléments environ, insérez-le au début, puis inversez.JMP 13 sera rapide dans tous les cas.