我有一个函数,基本上像一个查找表:
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=1)编译函数lookup
吗?不太可能这个函数会被调用所有可能的a函数。
我相信这样的功能类似于C++中的模板函数。
a
的值与选择函数所需的时间相同。后者将减少if
的数量。提高性能的一般规则是减少条件(if
)的数量。 - stefan bachert