Détails:
Je constate de mauvaises performances d'automatisation entre JMP 16 et JMP 15.
Comparé à JMP 15 (Testé 15.21)
Exemple de code C# en bas :
(C# .NetFramework) Utilisation de la référence JMP.tbl pour l'automatisation
Ligne de code clé : (à partir de l'automatisation JMP C#)
jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);
Cela ajoute une colonne de données à la table de données JMP à partir d'un tableau (MyData)
Pour JMP 16.2, cette ligne prend 2600 ms pour un tableau de 20000 valeurs
Pour JMP 15.21, cela prend 18 ms
Une baisse de performances de 144X plus lente ! (et cela empire encore à mesure que les tableaux deviennent plus grands !) Mon logiciel traite souvent des rangées de millions de lignes, ce qui rend JMP 16 inutilisable pour l'automatisation.
exemple de code C# :
JMP.Application myJMP = new JMP.Application();
JMP.DataTable jmpDT;
myJMP.Visible = true;
jmpDT = myJMP.NewDataTable(TableName);
string command = "dts= DataTable(\""
+ TableName + "\");";
myJMP.RunCommand(command);
jmpDT.AddRows(20000, 0);
double[] MyData = new double[20000];
jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);
Quelqu'un d'autre a-t-il rencontré ce problème, existe-t-il des solutions de contournement pour « RÉPARER » JMP 16 ?
Le support technique du ticket d'aide JMP a résolu le problème de performances avec JMP 16, avec la modification ci-dessous du code d'automatisation C#.
Voir ci-dessous:
.................................................. .........
Veuillez essayer ce code de test dans JMP 16 :
JMP.Application myJMP = new JMP.Application();// myJMP.EnableInteractiveMode(true);
JMP.DataTable jmpDT;
myJMP.Visible = true;
jmpDT = myJMP.NewDataTable(TableName);
string command = "dts= DataTable("" + TableName + "");";
myJMP.RunCommand(command);
jmpDT.AddRows(20000, 0);
double[] MyData = new double[20000];
myJMP.RunCommand("dts << Begin Data Update");
jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);
myJMP.RunCommand("dts << End Data Update");
Notice the addition of :
myJMP.RunCommand("dts << Begin Data Update");
jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);
myJMP.RunCommand("dts << End Data Update");
Cela obligera JMP à ignorer constamment la mise à jour de la table, ce qui cause le ralentissement.Nous avons un correctif dans JMP 17.1, mais vous pouvez utiliser la solution ci-dessus pour éviter le ralentissement des performances jusqu'à la sortie de JMP 17.1.
Veuillez me faire savoir si vous avez besoin d'aide supplémentaire.
Salutations,
David Matthews
Assistance technique JMP