我正在编写一些软件,用于创建一个复杂的波形(实际上是声波)作为数组。从一些原始波形(如正弦波等)开始,将会有一些函数来组合它们,以创建更加复杂的波形,还有更多的函数来组合这些波形等等。
可能看起来像这样:
可能看起来像这样:
f(mult(sine(), env(square(), ramp()))
但是这个过程要复杂得多。
一种方法是将每个函数都变成生成器,这样整个函数树每次执行一个元素时就会执行一次,并且每个生成器每次都会产生一个值。
该数组可能有几百万个元素,而函数树可能很深。使用生成器会非常低效吗?
另一种选择是让每个函数创建并返回整个数组。这种方法可能更有效,但也有缺点(实现较为混乱,直到计算结束才能获得结果,可能会使用大量内存)。
人们总是说你不应该试图去猜测Python的效率,但在这种情况下,使用生成器会花费很长时间吗?