我有一个函数,可以对很多工作进行预先计算。预计算大约需要2000微秒,并产生五个数组,其中最大的数组长度为360919,因此很显然将它们包含在源代码中是不切实际的。
经过预计算后,该功能大约需要70微秒,因此通过进行预计算,我的速度提高了约30倍。我需要调用此函数数百万次(作为Monte Carlo算法的一部分),因此使其尽可能快地运行显然是有益的。
预计算必要数组的最佳方法是什么?目前,我正在寻找以下选项
使用持久变量,并在首次调用函数时对其进行预先计算。
使用全局变量,并在调用函数之前对其进行初始化。
使用一个类,并在初始化对象时预先计算数组。
与明显的但不可组合的内联所有内容的解决方案相比,所有这些方法都具有一定程度的开销,以使局部变量和预先计算的变量位于同一工作空间中。
我是否错过了另一种解决方案,该解决方案的开销比上述方法少,但保留了可组合性?最好的解决方案就是进入C语言吗?
我经常使用的另一种可能性:使用辅助脚本(m文件)而不是函数。主脚本执行预计算,然后调用辅助脚本。
辅助脚本可以查看调用脚本中定义的所有变量,因此您不需要全局或持久变量,这可能会在运行时间方面带来一些开销。
当然,您需要注意,辅助脚本中的变量不会覆盖主脚本中不应包含的任何内容。也就是说,您需要防止两个脚本之间的变量名称冲突。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句