cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
ChrisM_X
Level III

JMP 16 automation *much* slower than JMP 15

Details:
I am seeing poor automation performance JMP 16 vs JMP 15.

Compared to JMP 15 (Tested 15.21)

 

Sample C# code at bottom:

(C# .NetFramework) using the JMP.tbl reference for automation

Key Line of code: (From C# JMP automation)

jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);

 

This adds a column of data to the JMP datatable from an array (MyData)

For JMP 16.2 this line takes 2600 ms for an array of 20000 values
For JMP 15.21 this takes 18 ms

A performance hit of 144X slower! (it gets even worse as the arrays get larger!) My software often deals in rows of millions of lines, it basically makes JMP 16 unusable for automation.

 

sample C# code:

 

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);

 

Has anyone else seen this issue, any workarounds to "FIX" JMP 16? 

 

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisM_X
Level III

Re: JMP 16 automation *much* slower than JMP 15

JMP help ticket tech support solved the performance issue with JMP 16, with the below modification to C# automation code.

See below:

...........................................................

Please try this test code 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");



This will force JMP to bypass updating the table constantly which is causing the slow down.  We have a fix in JMP 17.1, but you can use the work around above to avoid the slow performance until JMP 17.1 is released.

Please let me know if you need additional assistance.

Regards,

Dave Matthews
JMP Technical Support

View solution in original post

1 REPLY 1
ChrisM_X
Level III

Re: JMP 16 automation *much* slower than JMP 15

JMP help ticket tech support solved the performance issue with JMP 16, with the below modification to C# automation code.

See below:

...........................................................

Please try this test code 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");



This will force JMP to bypass updating the table constantly which is causing the slow down.  We have a fix in JMP 17.1, but you can use the work around above to avoid the slow performance until JMP 17.1 is released.

Please let me know if you need additional assistance.

Regards,

Dave Matthews
JMP Technical Support