gpt4 book ai didi

r - R中的自动总是时间函数

转载 作者:行者123 更新时间:2023-12-04 21:43:48 25 4
gpt4 key购买 nike

我拼凑了一个 Emacs 函数以便发送

tOne <- proc.time()[3]

在我的“send-to-R”键之前,然后是
tTwo <- proc.time()[3]

之后,然后打印差异。打印变得相当困惑。

R中是否有更好的方法来自动定时发送到R的所有内容? (如在 F# #time "on" 中)

编辑:目前,它发送一些额外的换行符,因为劣质缓冲区需要发送字符串:
> > a<-ocorrelate.parallel(replicate(2, rnorm(100000)), 0.5)


>
+ user 0.072 sys 0.020 elapsed 14.925
> > a<-ocorrelate.parallel(replicate(2, rnorm(100000)), 0.5)


>
+ user 0.088 sys 0.032 elapsed 16.868
> >

功能:
(defun ess-timed-cc (vis)
(interactive "P")
(process-send-string "R" "tone <- proc.time()[1:3];")
(ess-eval-region-or-function-or-paragraph-and-step vis)
(process-send-string "R" "ttwo <- proc.time()[1:3]; cat(paste(c(\"\",
format(ttwo-tone)), c(\"user\", \"sys\", \"elapsed\", \"\n\")));")
(other-window 1)
(inferior-ess-send-input)
(inferior-ess-send-input)
(goto-char (point-max))
(other-window -1)
)

最佳答案

您可以在 R 中打开分析,它会告诉您在每个函数中花费的相对时间量,这可能是您想要的。见 ?Rprof详情。

您也可以使用 addTaskCallback添加一个回调来显示自上次表达式完成以来的时间,尽管这个时间将包括任何空闲时间和键入表达式的时间,而不仅仅是运行时间。如果您已经在一个文件中拥有所有命令并将它们发送到命令行,那么这应该可以很好地工作。

您可能还可以设置一些 Hook 来启动和停止计时,但并非所有函数都有 Hook 。

对于 emacs 解决方案,您可以使用它将调用包装在 system.time 中。而不是调用 proc.time两次并减去。

您也可以使用 trace将 2 个调用插入到 proc.time 的函数在您想要计时的每个函数的开头和结尾。这将需要一个包含您想要计时的函数名称的向量,但是 ls可以帮忙。

关于r - R中的自动总是时间函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com