在 Julia 中创建共享模块的推荐方法是什么?
What is the recommended way in Julia to create a shared module?
经过一些实验和搜索,我找到了两种创建共享模块的方法
拥有一些常数值。
方案 A:
# in file sharedconstants.jl:
module sharedconstants
kelvin = 273.15
end
# -------------------------
# in file main.jl:
include("./sharedconstants.jl");
using .sharedconstants
print(sharedconstants.kelvin, "\n");
# -------------------------
方案 B:
# in file sharedconstants.jl:
module sharedconstants
kelvin = 273.15
end
# -------------------------
# in file main.jl:
import sharedconstants
print(sharedconstants.kelvin, "\n");
# -------------------------
方案 B 并不总是有效,当它失败时它会抛出
在当前路径中找不到共享常量的错误。另外,方案B
要求模块名称(sharedconstants)与主干相同
文件名。我想知道以上哪种方式更好
编译和执行。还有其他方法可以完成这项工作吗?
我是从 FORTRAN 转过来的,我很习惯简单地
use sharedconstants
在我的代码中。
出于性能原因,这应该是 const
(BTW 模块名称使用 CamelNaming):
module SharedConstants2
const kelvin = 273.15
end
以这种方式编写它可以使其类型稳定,从而导致巨大的性能差异:
julia> @btime sharedconstants.kelvin * 3
18.574 ns (1 allocation: 16 bytes)
819.4499999999999
julia> @btime SharedConstants2.kelvin * 3
0.001 ns (0 allocations: 0 bytes)
819.4499999999999
关于“放在哪里”这个问题,我建议做一个 Julia 包——从这里开始阅读:https://pkgdocs.julialang.org/v1/creating-packages/
最后,您可以看看 PhysicalConstants.jl
包 https://github.com/JuliaPhysics/PhysicalConstants.jl
经过一些实验和搜索,我找到了两种创建共享模块的方法 拥有一些常数值。
方案 A:
# in file sharedconstants.jl:
module sharedconstants
kelvin = 273.15
end
# -------------------------
# in file main.jl:
include("./sharedconstants.jl");
using .sharedconstants
print(sharedconstants.kelvin, "\n");
# -------------------------
方案 B:
# in file sharedconstants.jl:
module sharedconstants
kelvin = 273.15
end
# -------------------------
# in file main.jl:
import sharedconstants
print(sharedconstants.kelvin, "\n");
# -------------------------
方案 B 并不总是有效,当它失败时它会抛出
在当前路径中找不到共享常量的错误。另外,方案B
要求模块名称(sharedconstants)与主干相同
文件名。我想知道以上哪种方式更好
编译和执行。还有其他方法可以完成这项工作吗?
我是从 FORTRAN 转过来的,我很习惯简单地
use sharedconstants
在我的代码中。
出于性能原因,这应该是 const
(BTW 模块名称使用 CamelNaming):
module SharedConstants2
const kelvin = 273.15
end
以这种方式编写它可以使其类型稳定,从而导致巨大的性能差异:
julia> @btime sharedconstants.kelvin * 3
18.574 ns (1 allocation: 16 bytes)
819.4499999999999
julia> @btime SharedConstants2.kelvin * 3
0.001 ns (0 allocations: 0 bytes)
819.4499999999999
关于“放在哪里”这个问题,我建议做一个 Julia 包——从这里开始阅读:https://pkgdocs.julialang.org/v1/creating-packages/
最后,您可以看看 PhysicalConstants.jl
包 https://github.com/JuliaPhysics/PhysicalConstants.jl