计算R中函数的复杂度

计算R中函数的复杂度,r,function,time-complexity,complexity-theory,R,Function,Time Complexity,Complexity Theory,我需要用R计算一个长函数(600条直线)的复杂度。 我想要的结果可能是这样的 start calculate complexity **My function** End calculate complexity result= " the complexity of this function is x 我想我没有理解,但我在基准测试中发现的只是计算运行时间 start.time <- Sys.time() *****function***** end.time <- Sys.t

我需要用R计算一个长函数(600条直线)的复杂度。 我想要的结果可能是这样的

start calculate complexity
**My function**
End calculate complexity
result= " the complexity of this function is x
我想我没有理解,但我在基准测试中发现的只是计算运行时间

start.time <- Sys.time()
*****function*****
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken

是否有其他替代方案,或者我可以根据需要更新这些功能

取决于您对“复杂性”的想法您有很多选择,仅举几例:

圈复杂度

  • 通过程序源代码的线性独立路径数量的定量度量-例如通过cyclocomp包实现:
内存使用

  • Base R提供了一个选项,可以使用
    rprofm
    ——一个纯内存使用分析器来评测内存使用情况(如果R是在定义了R_内存_评测的情况下编译的)
  • 使用
    utils::Rprof(…,memory.profiling=TRUE)采样内存评测
  • profvis-Rprof的一个包扩展,具有非常好的图形输出,用于时间和内存-
花费的时间

  • 使用多种方法进行度量所花费的时间,例如基本函数
    system.Time
    返回两次
    proc.Time
    调用之间的差异,在这两次调用中,它对作为参数提供的表达式求值。最简单的用法:
    system.time(runif(10^8))
  • 时间分析包,如或

根据您对“复杂性”的想法,您有很多选择,举几个例子:

圈复杂度

  • 通过程序源代码的线性独立路径数量的定量度量-例如通过cyclocomp包实现:
内存使用

  • Base R提供了一个选项,可以使用
    rprofm
    ——一个纯内存使用分析器来评测内存使用情况(如果R是在定义了R_内存_评测的情况下编译的)
  • 使用
    utils::Rprof(…,memory.profiling=TRUE)采样内存评测
  • profvis-Rprof的一个包扩展,具有非常好的图形输出,用于时间和内存-
花费的时间

  • 使用多种方法进行度量所花费的时间,例如基本函数
    system.Time
    返回两次
    proc.Time
    调用之间的差异,在这两次调用中,它对作为参数提供的表达式求值。最简单的用法:
    system.time(runif(10^8))
  • 时间分析包,如或

我希望这是一个打字错误,而不是一些顾问发明的一些疯狂的新质量指标。@Candid_orange抱歉,但我没有理解“长函数(600对齐)”对齐的用法在他的语言中可能是“线条”。也许?我希望这是一个打字错误,而不是一些顾问发明的一些疯狂的新质量指标。@Candid_orange抱歉,但我没有理解这种用法“长函数(600行)”在他的语言中很可能是“行”?
    complexity(x, scaleMin, scaleMax, width = 7, measure = "complexity", 
   rescale = FALSE)