在 Numeric Haskell Repa Tutorial Wiki中,有一段内容如下(上下文):
10.1 Fusion,以及为什么需要它
Repa 严重依赖数组融合来实现快速代码。Fusion 是 GHC 在编译程序时执行的内联和代码转换组合的一个奇特名称。融合过程将 Repa 库中定义的数组填充循环与您在自己的模块中编写的“worker”函数合并。如果融合过程失败,那么生成的程序将比它需要的慢得多,通常比使用普通 Haskell 列表的等效程序慢 10 倍。另一方面,如果融合工作正常,生成的代码将与等效的干净编写的 C 程序一样快地运行。一旦你了解了发生了什么,使融合工作并不难。
我不明白的部分是这样的:
“如果融合过程失败,那么生成的程序将比它需要的慢得多,通常比使用普通 Haskell 列表的等效程序慢 10 倍。”
我明白为什么如果流融合失败它会运行得更慢,但为什么它的运行速度比列表慢得多?
谢谢!