Dettagli:
Noto scarse prestazioni di automazione tra JMP 16 e JMP 15.
Rispetto a JMP 15 (testato 15.21)
Esempio di codice C# in basso:
(C# .NetFramework) utilizzando il riferimento JMP.tbl per l'automazione
Riga di codice chiave: (dall'automazione C# JMP)
jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);
Aggiunge una colonna di dati alla tabella dati JMP da un array (MyData)
Per JMP 16.2 questa riga impiega 2600 ms per un array di 20000 valori
Per JMP 15.21 questo richiede 18 ms
Un calo delle prestazioni pari a 144 volte! (La situazione peggiora ulteriormente man mano che gli array diventano più grandi!) Il mio software spesso gestisce righe di milioni di linee, il che rende sostanzialmente JMP 16 inutilizzabile per l'automazione.
esempio di codice 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);
Qualcun altro ha riscontrato questo problema? Esistono soluzioni alternative per "CORREGGERE" JMP 16?
Il supporto tecnico del ticket di assistenza di JMP ha risolto il problema delle prestazioni con JMP 16, con la seguente modifica al codice di automazione C#.
Vedi sotto:
.................................................. .........
Prova questo codice di prova in 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");
Ciò costringerà JMP a ignorare l'aggiornamento costante della tabella che sta causando il rallentamento.Abbiamo una correzione in JMP 17.1, ma puoi utilizzare la soluzione sopra descritta per evitare il rallentamento delle prestazioni fino al rilascio di JMP 17.1.
Per favore fatemi sapere se avete bisogno di ulteriore assistenza.
Saluti,
Dave Matthews
Supporto tecnico JMP