是否可以像在Matlab中一样在Julia中嵌套tic()和toc()?如果不是的话,怎么办?

是否可以像在Matlab中一样在Julia中嵌套tic()和toc()?如果不是的话,怎么办?,matlab,time,timer,julia,Matlab,Time,Timer,Julia,可以在Julia中调用嵌套的tic()和toc()吗? 问题是我无法将所选计时器的名称发送到toc()函数 function toc(t0) t1 = time_ns() t = (t1 - t0) / 1e9 println("elapsed time: ", t, " seconds") return t end Matlab中的类似内容(我引用Matlab帮助) ` 看起来你可以,如果这不是你所说的嵌套tic和toc的意思,请告诉我 tic() sleep(1) tic(

可以在Julia中调用嵌套的tic()和toc()吗? 问题是我无法将所选计时器的名称发送到toc()函数

function toc(t0)
  t1 = time_ns()
  t = (t1 - t0) / 1e9
  println("elapsed time: ", t, " seconds")
  return t
end
Matlab中的类似内容(我引用Matlab帮助)

`


看起来你可以,如果这不是你所说的嵌套
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

请注意,如果需要对多行计时,则计时宏
@time
@eleapsed
可以与块参数一起使用

@time begin
    do_something()
    do_something_more()
end

但是,由于Julia的运行时语义非常倾向于函数和局部变量,因此通常最好将代码块包装在函数中,而不是在全局范围内运行它。

不幸的是,当前的答案无助于解决问题。@user25004我添加了更多内容,如果有帮助,请告诉我。是的,谢谢。time_ns()是我不知道的函数:-)有趣的是,这样一个toc函数返回的值与原始toc函数返回的值不匹配。