【问题标题】:Stopwatch function in JuliaJulia 中的秒表功能
【发布时间】:2015-07-20 20:39:04
【问题描述】:

在 MATLAB 中有一对函数 tictoc 可用于启动和停止秒表计时器。 取自link的例子:

tic
A = rand(12000, 4400);
B = rand(12000, 4400);
toc
C = A'.*B';
toc

我知道 Julia 中有一个宏 @time 具有类似的功能。

julia> @time [sin(cos(i)) for i in 1:100000];
elapsed time: 0.00721026 seconds (800048 bytes allocated)

Julia 中有没有一组类似的函数? @time 宏适用于时序语句 可以写成一两行。 对于较长的代码部分, 我更喜欢使用 tic-toc 函数。

我尝试了什么

当我在谷歌上搜索“朱莉娅秒表”时, 我找到了一个有用的链接和四个不相关的链接。

  1. 介绍 Julia/元编程 - 维基教科书,打开 ... 元编程是指您编写 Julia 代码来处理和修改 Julia 代码。 ... @time 宏在开头插入一个“启动秒表”命令 ...
  2. 我们的隐形秒表促销 - YouTube Julia 秒表视频
  3. Julia Larson 在 Twitter 上说:“这个#Mac OSX 计时器/秒表是......
  4. 用秒表计时《法国大厨》的剧集
  5. 朱莉娅·格里菲斯 | Oiselle 女士跑步服装

我不知道为什么我没有想到只是尝试tic()toc()

【问题讨论】:

  • Julia 也有 tic()toc()... 但是,请务必阅读 Julia 性能提示 docs.julialang.org/en/latest/manual/performance-tips/… ... tl;dr 是您最好不要进行计算在函数内部而不是在全局范围内做所有事情,之后使用@time 会很简单。 @time 的另一个优势在于它除了报告时间之外还报告内存分配。
  • 我不明白为什么这值得一票否决(也许是“我尝试了什么”部分中的无关材料?)。过于苛刻。+1 回到 0。另外,我强烈支持以赛亚的评论。90% 的“为什么我的 Julia 慢”问题的出现是因为作者在全局范围内工作,即没有将代码包装在函数中。
  • @ColinTBowers 我实际上收到了两次反对票。我的猜测是,因为我不只是尝试tic()toc(),投票者对此感到不安。后来我添加了“我尝试了什么”部分来解释为什么当我搜索函数 tic()toc() 实际上在 Julia 中退出时对我来说并不明显。
  • 明白。 “我尝试过的”部分通常是个好主意,并且像您所拥有的那样明确表示会更好。当然,有时人们会变得有点傻。我记得this question 被关闭的时候,因为它最初没有包含“我尝试过的”部分......

标签: julia


【解决方案1】:

tic()toc()https://github.com/JuliaLang/julia/commit/1b023388f49e13e7a42a899c12602d0fd5d60b0a 起已被弃用

您可以将@elapsed@time 用于更长的块,方法是将它们包装在一个环境中,如下所示:

t = @elapsed begin
    ...
end

还有TickTock.jl,它重新实现了tic()toc()tick()tock()

using TickTock
tick()
# Started timer at 2017-12-13T22:30:59.632
tock()
# 55.052638936 ms: 55 seconds, 52 milliseconds

【讨论】:

    【解决方案2】:

    来自Julia documentationsearch

    tic()

    设置一个计时器,以便在下次调用 toc()toq() 时读取。这 宏调用@time expr也可以用于时间评估。

    【讨论】:

    • 自从您回答后 Julia 发生了变化,文档的链接已失效,tictoc 已被弃用。如果可以的话,更新它会很棒。谢谢。
    • tic() 已折旧
    【解决方案3】:

    您也可以使用time() 来获得类似的输出。例如:

    t = time()
    
    # code block here
    # ...
    # ...
    
    dt = time() - t
    

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多