функция бенчмаркинга, вызываемая внутри модуля в Julia

#julia

Вопрос:

У меня есть модуль Julia, содержащий две следующие функции:

 module SetupMod   export SetupProblem   Base.@kwdef struct MatParams  E::Float32  ν::Float32  ρ::Float32  ConstModelType::Char = 'E' #E= Elastic and V=von Mises Plastic end   Base.@kwdef struct MeshParams  NumElsX::UInt32 = 1  NumElsY::UInt32 = 1  LenY::Float32 = 0.  LenX::Float32 = 0. end   Base.@kwdef struct AnalysisConsts  LoadStpsNum::UInt32  g::Float16 = 10.  NumMP::UInt8 #Number of material point per direction per element  MPType::Char = 'M' #M = MPM and G=GIMP   end   function Compute2DGrid(T, MeshParams)  NEls::UInt32 = MeshParams.NumElsX * MeshParams.NumElsY  NNodes::UInt32 = (MeshParams.NumElsX   1)* (MeshParams.NumElsY   1)  NodeCoords = zeros(T, (NNodes, 2))  Size = size(NodeCoords) end   function SetupProblem(T)  # MatConst = MatParams(E=1e4, ν = 0., ρ = 80., ConstModelType='E')  ModelConst = MeshParams( NumElsX = 1, NumElsY = 32, LenY = 50., LenX = 50/32)  AnalysisConst = AnalysisConsts(LoadStpsNum = 40, g = 9.81, NumMP=2, MPType='M')  Compute2DGrid(T, ModelConst) end   end # module  

Я хочу знать время для запуска функции Compute2DGrid() при вызове функции SetupProblem (), как показано ниже:

 using .SetupMod using BenchmarkTools SetupMod.SetupProblem(Float32)  

Когда я добавляю @btime перед вызовом функции Compute2DGrid, среда IDE открывает файл под названием выполнение.jl и предоставление исключения. Пожалуйста, помогите мне с этим.

Ответ №1:

Ваше using BenchmarkTools заявление должно быть внутри SetupMod модуля, так как это область, в которой вы используете @btime .

Какой бы редактор вы ни использовали в качестве IDE (VS Code/Juno), он, вероятно, пытается показать вам UndefVarError: @btime not defined , что @btime в этой области недоступно.