【发布时间】:2017-08-31 14:15:17
【问题描述】:
我有一个基本上充当查找表的函数:
function lookup(a::Int64, x::Float64, y::Float64)
if a == 1
z = 2*x + y
else if a == 2
z = 5*x - 2*y
else if a == 3
...
end
return z
end
变量a本质上决定了z的关系是什么。
然而,这个函数需要一些时间来编译,并且在运行时也不是最有效的。
您能否仅针对 a 的一个实例(例如 a=1)编译函数 lookup?该函数不太可能调用 a 的所有可能函数。
我相信这样的功能会类似于 C++ 中的模板函数。
【问题讨论】:
-
如果你想要更好的表现,你需要给我们一个更高的上下文。一般来说,为
a选择一个值与选择一个函数所花费的时间相同。后者会减少if的数量。提高性能的一般规则是减少条件的数量 (if)。