如何计算我的主要代码的时间?
How can I calculate time of my main code?
我有一个包含一些功能的代码。对于我使用 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)
-------------------------------------------- --------------------------------
一般推荐使用BenchmarkTools.jl对一段代码进行benchmark。
Paralleling Base
Julia 中的 @time
宏,BenchmarkTools
导出通常更高级的 @btime
宏,除其他外,它避免测量编译时间并执行更精确的统计分析。 (有关详细信息,请参阅包的文档)
您可以像使用 @time
宏一样使用它,例如@btime rand(2,2)
要对代码块进行基准测试,例如您的 "main code",您可以(并且应该)将那段代码放入函数或 begin ... end
块中。例如,
@btime begin
# my code goes here
end
请注意,独立于基准测试,无论如何建议将性能关键代码放入函数中,如 Julia 文档中的 Performance Tips 中所述。
引入 @btime
之后,当然,如果您的代码的运行时间在编译时间中占主导地位,在对整个代码进行基准测试时可能就是这种情况 ("main code"),通常情况下还是可以的使用 @time
。阅读 this recent discourse thread 应该很有启发性,其中讨论了如何正确使用 @time
的部分内容。
我有一个包含一些功能的代码。对于我使用 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)
-------------------------------------------- --------------------------------
一般推荐使用BenchmarkTools.jl对一段代码进行benchmark。
Paralleling Base
Julia 中的 @time
宏,BenchmarkTools
导出通常更高级的 @btime
宏,除其他外,它避免测量编译时间并执行更精确的统计分析。 (有关详细信息,请参阅包的文档)
您可以像使用 @time
宏一样使用它,例如@btime rand(2,2)
要对代码块进行基准测试,例如您的 "main code",您可以(并且应该)将那段代码放入函数或 begin ... end
块中。例如,
@btime begin
# my code goes here
end
请注意,独立于基准测试,无论如何建议将性能关键代码放入函数中,如 Julia 文档中的 Performance Tips 中所述。
引入 @btime
之后,当然,如果您的代码的运行时间在编译时间中占主导地位,在对整个代码进行基准测试时可能就是这种情况 ("main code"),通常情况下还是可以的使用 @time
。阅读 this recent discourse thread 应该很有启发性,其中讨论了如何正确使用 @time
的部分内容。