你好呀 !
我正在循环中迭代许多分析(例如数百万次),并且我需要存储结果。 这些结果是文本值和数值。 到目前为止,我将结果存储在数据表中,但随着表大小的增加,内存也会增加,并且分析速度往往会降低。
我正在寻找一种节省时间和内存的方法。
该表已经是私有的(如论坛其他主题中所建议的);它使它变得更好,但还不够。
我尝试将文本变量保存在列表中,将数字变量保存在向量中(这对于 R 来说非常有效)。 也许我做错了,但这里似乎增加了循环时间。
有人有好主意吗?
我正在使用 Jmp 14,但我可以访问 JMP 16。
您使用哪些特定平台? JMP 16 和 17 提高了许多平台的速度。
此外,您还可以使用 HP Time() 函数来测试迭代。 一些很好的讨论是这里和这里。
添加到@杰德坎贝尔的回复,您还可以使用JMP中的分析功能调试器以确定瓶颈在哪里。
如果内存不足,请留意您忘记关闭的私有数据表。 (尝试将它们设置为不可见而不是私有,以确保您已关闭它们。 隐形仍然出现在主窗口中。)
如果 JMP 运行速度越来越慢
- 如果您有一台带有磁盘灯的老式台式机,请密切注意它是否经常亮起。 您可能正在创建非常大的矩阵。 J(10000) 构成一个 2D(非 1D)矩阵。
- 如果您通过连接到末尾来构建字符串或矩阵,那么随着字符串或矩阵变大,速度会变得非常慢。 将矩阵预先分配到正确的大小,或者使用字符串部分列表,然后在完成后使用 concatitems() 。
请使用 JSL 调试器的分析器作为@马克贝利建议。
Wrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, Go扳手、时钟、Go
如果幸运的话,将会有一个明显的热点可能与上面的内容相匹配。
我使用 Kmean 平台(并在此过程中打开和关闭报告)。
我习惯使用 tick Second () ,我不知道 Hp time() 。 看起来好像很相似?
我会检查您发现的讨论,谢谢。
谢谢克雷格,这是非常好的建议,我不知道预先分配大小会有帮助!
我很确定这与我忘记关闭的表无关,因为我的脚本中有一个步骤使我的表可见。