Как я могу рассчитать время моего основного кода? - PullRequest
0 голосов
/ 02 января 2019

У меня есть код, который включает некоторые функции.для каждой функции я использую CPUTime.но в основной модели, как я могу рассчитать время.Пожалуйста, помогите мне.

например

using CPUTime
function Sminf2(ZB,ZT)
    model=CreateModel();
    WES=model[1];f1=model[2];f2=model[3];
    rf1=model[4];rf2=model[5];lf1=model[6];
    lf2=model[7];
    x=WES[:x];
    y=WES[:y];
   JuMP.setRHS(rf1,ZB[1]);
   JuMP.setRHS(lf1,ZT[1]);
   JuMP.setRHS(rf2,ZT[2]);
   JuMP.setRHS(lf2,ZB[2]);
   @objective(WES,Min,f2);
  status=solve(WES)
  return getvalue(x)
end
@time @CPUtime Sminf2(ZB,ZT)

-----------------------------------------------------------------

но в этом основном коде, как я могурассчитать время?

using JuMP,CPLEX,CPUTime
include("WEIGHT.juliarc (2).jl");
include("CreateModel.juliarc.jl");
include("Sminf2.juliarc.jl");
include("Sminf1.juliarc.jl");
pq=[];
model=CreateModel();
WES=model[1];f1=model[2];f2=model[3];
rf1=model[4];rf2=model[5];lf1=model[6];
lf2=model[7];ofv1=model[8];ofv2=model[9];
x=WES[:x];
y=WES[:y];
for i=1:5
     W=WEIGHT(Zb,Zt);
     pq=[pq;W[1]];
end
println("PQ=",pq)

------------------------------------------------------------------------------

1 Ответ

0 голосов
/ 02 января 2019

Обычно рекомендуется использовать BenchmarkTools.jl для сравнительного анализа фрагмента кода.

Параллельно с макросом @time в Base Julia, BenchmarkTools экспортирует обычно лучший макрос @btime, который, помимо прочего, избегает измерения времени компиляции и выполняет более точный статистический анализ. (подробности см. в документации к пакету)

Вы можете использовать его так же, как и макрос @time, например @btime rand(2,2)

Чтобы сравнить блок кода, такой как ваш «основной код», вы можете (и должны) поместить этот фрагмент кода в функцию или в блок begin ... end. Например,

@btime begin
    # my code goes here
end

Обратите внимание, что независимо от бенчмаркинга, в любом случае рекомендуется помещать в функции критический код производительности, как объяснено в Советах по производительности в документации Джулии.

Введя @btime, конечно, если время выполнения вашего кода доминирует над временем компиляции, как, вероятно, должно быть в случае тестирования всего кода («основного кода»), часто, тем не менее, хорошо использовать @time , Следует поучительно прочитать эту недавнюю дискуссионную ветку , где обсуждались части того, как правильно использовать @time.

...