gpt4 book ai didi

Matlab:arrayfun、cellfun、spfun 和 structfun 与简单的 for 循环

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:00 25 4
gpt4 key购买 nike

使用所有 *fun 函数(arrayfuncellfunstructfunspfun) 还是简单地使用 for 循环?

就代码的可读性而言,哪种方法可以提供更好的性能以及哪种方法应该被视为更好的做法?

最佳答案

这真的取决于你所说的“性能”:)

如果您指的是最短执行时间,那么有时 *fun 会更快(例如,cellfun('isempty', ...);(是的,字符串参数!)肯定比循环版本好)。有时循环更快。如果您使用的是 < 2006 版的 Matlab,请默认使用 *fun 函数。如果您最近使用过任何东西,请默认使用循环。您仍然必须始终进行概要分析以找出哪个更快。

正如 Amro 所指出的,如果您有一个能够进行 FP 运算的 GPU,以及支持 GpGPU 的最新版本的 Matlab,那么为 gpuArray 调用 arrayfun输入将被大规模并行化。但是,关于执行时间,不能做出一般性的陈述;对于较小的阵列,或者绝对庞大的阵列,将所有内容复制到 GPU 的开销可能会抵消并行计算的任何好处,因此......分析确实是唯一可以确定的方法。

如果您指的是最短编码时间,那么我想说的是,只要操作简单,就*fun 而言编码通常会更快。对于任何复杂的事情,通常最好进行循环。

如果您的意思是最佳可读性,因此在专业环境中维护和实现更改所需的最短时间,当然,请继续循环。

目前,对于您的问题并没有真正明确的简单答案 :)

关于Matlab:arrayfun、cellfun、spfun 和 structfun 与简单的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16143314/

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