gpt4 book ai didi

performance - 具有持久状态的 MATLAB 函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:35:09 24 4
gpt4 key购买 nike

我有一个函数可以预先计算很多工作。预计算耗时约 2000 微秒并生成五个数组,其中最大的数组长度为 360919,因此显然将它们包含在源代码中是不切实际的。

预计算后,该函数大约需要 70 微秒,因此我通过预计算获得了大约 30 倍的加速。我需要调用此函数数百万次(作为蒙特卡罗算法的一部分),因此让它尽可能快地运行显然是有益的。

预先计算必要数组的最佳方法是什么?目前我正在查看以下选项

  1. 使用持久变量,并在第一次调用函数时预先计算它们。

  2. 使用全局变量,并在调用函数前对其进行初始化。

  3. 使用类,并在对象初始化时预先计算数组。

与明显但不可组合的解决方案相比,所有这些都有一定程度的开销,内联所有内容以便局部变量和预先计算的变量位于同一工作区中。

有没有我错过的另一种解决方案,它的开销比上述方法少,但保留了可组合性?最好的解决方案就是直接使用 C 语言吗?

最佳答案

另一种我经常使用的可能性:使用辅助脚本(m 文件)而不是函数。主脚本做预计算,然后调用辅助脚本。

辅助脚本可以看到调用脚本中定义的所有变量,因此您不需要全局或持久变量,这可能会在运行时间方面引入一些开销。

当然,您需要注意辅助脚本中的变量不会覆盖主脚本中不应覆盖的任何内容。也就是说,您需要防止两个脚本之间的变量名称发生冲突。

关于performance - 具有持久状态的 MATLAB 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22717880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com