JMP 16 自动化比 JMP 15 慢得多细节:
我发现 JMP 16 的自动化性能比 JMP 15 更差。
与 JMP 15 相比(已测试 15.21)
底部的示例 C# 代码:
(C# .NetFramework)使用 JMP.tbl 参考实现自动化
关键代码行:(来自 C# JMP 自动化)
jmpDT.NewColumn("MyData", JMP.colDataTypeConstants.dtTypeNumeric, 0, 8).SetDataVector(MyData);
这会从数组 (MyData) 向 JMP 数据表添加一列数据
对于 JMP 16.2,此行需要 2600 毫秒来处理包含 20000 个值的数组
对于 JMP 15.21,这需要 18 毫秒
性能下降了 144 倍!(数组越大,情况就越糟!)我的软件经常处理数百万行的数据,这基本上使得 JMP 16 无法用于自动化。
示例 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);
还有人见过这个问题吗?有没有什么解决方法可以“修复” JMP 16?
质量与工艺工程回复:JMP 16 自动化*比 JMP 15 慢得多*JMP 帮助票技术支持通过以下对 C# 自动化代码的修改解决了 JMP 16 的性能问题。
见下文:
..................................................... …………
请在 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");
这将强制 JMP 绕过导致速度变慢的持续更新表。我们在 JMP 17.1 中进行了修复,但在 JMP 17.1 发布之前,您可以使用上述解决方法来避免性能下降。
如果您需要其他帮助,请告诉我。
问候,
戴夫·马修斯
JMP 技术支持