是否可以像在 Matlab 中一样在 Julia 中嵌套 tic() 和 toc() ?如果不是,那么解决方法是啥?
Posted
技术标签:
【中文标题】是否可以像在 Matlab 中一样在 Julia 中嵌套 tic() 和 toc() ?如果不是,那么解决方法是啥?【英文标题】:Is it possible to have nested tic() and toc() in Julia as in Matlab? If not what is the way around it?是否可以像在 Matlab 中一样在 Julia 中嵌套 tic() 和 toc() ?如果不是,那么解决方法是什么? 【发布时间】:2015-04-13 19:41:29 【问题描述】:是否可以在 Julia 中调用嵌套的 tic() 和 toc() ? 问题是我无法将我选择的计时器名称发送到 toc() 函数。
Matlab 中的类似内容(我引用 Matlab 帮助)
`
REPS = 1000; minTime = Inf; nsum = 10;
tic; % TIC, pair 1
for i=1:REPS
tStart = tic; % TIC, pair 2
total = 0;
for j=1:nsum
total = total + besselj(j,REPS);
end
tElapsed = toc(tStart); % TOC, pair 2
minTime = min(tElapsed, minTime);
end
averageTime = toc/REPS; % TOC, pair 1 `
【问题讨论】:
【参考方案1】:看起来可以,如果这不是嵌套tic
和toc
的意思,请告诉我。
tic()
sleep(1)
tic()
sleep(1)
toc() # elapsed time: 1 second
sleep(1)
toc() #elapsed time: 3 seconds
此外,如果您想在 Julia 中计时,使用@time
宏会更容易,它还可以跟踪内存分配。
@time (sleep(1); @time sleep(1);)
# elapsed time: 1 second, 672 bytes allocated
# elapsed time: 2.13 seconds, 6 MB allocated
不幸的是,看起来还没有预定义的函数来使用tic
的返回值。您可以使用time_ns
函数编写自己的代码。
function toc(t0)
t1 = time_ns()
t = (t1 - t0) / 1e9
println("elapsed time: ", t, " seconds")
return t
end
【讨论】:
不幸的是,当前的答案无助于解决问题。 @user25004 我又添加了一些,如果有帮助请告诉我。 是的,谢谢。 time_ns() 是我不知道的函数:-) 有趣的是,这样一个toc函数返回的值,与原来的toc函数返回的值不匹配。【参考方案2】:请注意,如果您需要对多行进行计时,则可以将计时宏 @time
和 @eleapsed
与块参数一起使用。
@time begin
do_something()
do_something_more()
end
但由于 Julia 的运行时语义强烈支持函数和局部变量,通常最好将代码块包装在函数中,而不是在全局范围内运行。
【讨论】:
以上是关于是否可以像在 Matlab 中一样在 Julia 中嵌套 tic() 和 toc() ?如果不是,那么解决方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以像在 VS 中拖动箭头一样在 java eclipse 调试器中“返回”
是否可以像在 Android Studio 中一样在 Eclipse 中使用 Firebase? [复制]