朱莉娅:是一个接收Dict作为输入并输出Dict类型的函数的稳定函数吗?

时间:2019-07-11 00:56:54

标签: julia

我正在尝试将一些Matlab代码移植到Julia,以查看优化的Julia代码是否可以比优化的Matlab代码运行得更快。 Matlab代码是一个单一函数,用于描述具有多个组件的模型。在Matlab中,该函数接收包含许多参数和模型配置的结构作为输入,并输出一个存储所有组件行为的结构。

我对Julia来说还很陌生,但是我知道Julia函数必须保持类型稳定才能快速。我的问题是,如果我编写能够接收Dict(类似于Matlab的结构)作为输入并输出Dict的Julia函数,那么该函数的类型仍然稳定吗?

在Matlab代码中,结构包含不同类型的变量,包括矩阵,字符数组和函数句柄。

1 个答案:

答案 0 :(得分:2)

由于Dict {String,Any}的值将由Julia装箱,因此它在技术上应比全类型结构慢。但是,您的函数将花费大部分时间进行计算,并且只会在运行结束时将结果放入框内的Dict值中。

为确保函数内部结构稳定,可能需要使用输入Dict键入提示,例如:

function f(d::Dict)
    width::Float64 = d["width"]  # now we work with width, not d["width"]

只要使用这样的Dict甚至Dict {Any,Any}来使函数的内部本身保持类型稳定,仅输入和输出多个值就不会影响总时序以防止Julia函数只要它确实比其他实现(MATLAB)要快,那么它就比其他实现(MATLAB)要快。

相关问题