我有一个包含 100 个函数的向量,我想将它们组合在一起。我需要多次按顺序运行这 100 个函数,所以我认为组合它们比创建嵌套循环更快,但是,我错了。我试过reduce(?, reverse(instructions))(input)了,花了很长时间。我开始计时,并惊讶地发现将任意数量的函数组合在一起比简单地循环遍历函数列表并按顺序应用它们要慢得多。我拥有的所有 100 个函数都是恒定时间操作,但这是我在运行这些函数的组合时得到的结果。
julia> @time reduce(?, reverse(instructions[1:2]))(2019)
0.000015 seconds (9 allocations: 448 bytes)
2041
julia> @time reduce(?, reverse(instructions[1:5]))(2019)
0.006597 seconds (4.43 k allocations: 212.517 KiB)
6951
julia> @time reduce(?, reverse(instructions[1:10]))(2019)
0.022688 seconds (31.01 k allocations: 1.405 MiB)
4935
julia> @time reduce(?, reverse(instructions[1:20]))(2019)
0.951510 seconds (47.97 k allocations: 2.167 MiB)
3894
julia> @time reduce(?, reverse(instructions[1:21]))(2019)
1.894370 seconds (60.45 k allocations: 2.715 MiB)
6242
julia> @time reduce(?, reverse(instructions[1:22]))(2019)
3.748505 seconds (50.59 k allocations: 2.289 MiB) …Run Code Online (Sandbox Code Playgroud) julia ×1