JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能我在处理大型表格(约 1300 万行)时,JMP v19 中的图形生成器遇到了严重的性能问题。在 JMP v18 中,我能够流畅地与同一数据集交互——平移、缩放和切换变量都很容易操作。这是一个大约 1300 万行、几十列的单表,运行在一个拥有 64 GB RAM 的大型工作站上。
然而,在 JMP v19 中,每当我尝试创建或调整绘图时,都会频繁出现“沙漏”延迟和“JMP 无响应”的消息。使用相同的数据和设置,回到 JMP v18 后,一切又恢复正常了。
我想知道是否有人注意到,自从升级到 JMP v19 以来,图形生成器在处理大型表格时的性能有所下降。如果是的话,JMP 或许值得研究一下版本之间的变化。
有没有人找到有帮助的解决方法或设置(例如,内存首选项、GPU 设置等)?
数据探索与可视化视窗回复:JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能这里有130万行。我的印象是GB在JMP 18和19中响应都很慢。
回复:JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能过去,我遇到过严重的性能问题,这常常可以追溯到列公式的意外重新计算。
JMP18 中修复的一个严重问题:
为什么选择/取消选择行会触发重新评估列公式?
一些帮助:在 JMP 18 及更高版本中,此类重新计算会在状态栏中指示。
在 JMP 19 中,如果您希望收到重新计算的通知,您可以要求 JMP 通知您:
https://community.jmp.com/t5/Discussions/Undocumented-Secrets/mp/908936/highlight/true#M106749
如果这不是性能不佳的原因,您可以检查内存消耗。如果内存由程序和显卡共享,那么内存不足可能会导致严重的影响。
为了深入挖掘,您能否创建一个虚拟文件供我们分析?
有时,问题特定于某种类型的数据或情节。
没有人争论为什么 JMP19 中发生了一些变化 - 但我同意@雷塞尔的观点:
对于许多类型的图,一些 Mio 行是 JMP 开始响应迟缓的地方。
JMP 可以处理更大的数据文件,但有时用户不想等待。
如果等待 0.5 秒还算可以接受,那么 5 个 0.5 秒就感觉不舒服了。所以,如果 100 万行感觉很顺畅,那么 500 万行就没意思了。
回复:JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能我不知道这是否有用,但我在一台16GB的机器上运行着JMP 18。我刚刚在一个26列350万行的文件上测试了图形生成器,它运行速度很快,没有任何延迟。
回复:JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能我认为列数不会影响速度。
对于行来说,计算平均值的条形图和所有单个数据点的点图所需的时间是不同的。
例如,在我的旧笔记本上,计算 sin() 的箱线图需要大约 6 秒,而计算 row() 的箱线图则需要 2 秒 - 并且在 JMP 18 和 JMP19 中所需的时间相当可比。
计算点图需要更长的时间,而且似乎:使用 JMP19 比使用 JMP18 要长一点?
你的系统怎么样?

New Table( "test",
Add Rows( 10000000 ),
New Table Variable( "categories", 20),
New Column( "row",
Formula( Row() )
),
New Column( "sin",
Formula( Sin( :row / 10 ) )
),
New Column( "rnd",
Formula( Random Integer( :categories ) )
)
)
回复:JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能在我的计算机上,所有列的填充尺寸均为 5'',大约如此。
JSL 本身的运行时间<0.1''。
这样好吗?我的意思是,1000万行,我觉得完全可以接受。但是,把这些列放到GB大小的内存里,它需要一段时间才能响应。不过,这比在Excel里(我敢说是Excel)解决这样的问题要好得多。
回复:JMP v19 图形生成器在处理大型表格(1300 万行以上)时的性能迂回且可接受。
另一方面,想象一下实时渲染图形游戏需要多少次计算。
下一步:创建一个图表。什么是流畅的,没有延迟的,什么是等待时间过长?
为了获得创建表的更精确的值,可以使用hptime() 。
并且考虑到列公式的计算,可以等待dt << run formulas 。
t0 = hp time ();
dt = New Table( "test",
Add Rows( 10000000 ),
New Table Variable( "categories", 20),
);
New Column( "row",
Formula( Row() )
);
New Column( "sin",
Formula( Sin( :row / 10 ) )
);
New Column( "rnd",
Formula( Random Integer( :categories ) )
);
dt << run formulas;
write("t(s): ", (hptime()-t0)/1000000)