【问题标题】:writing efficient functions in scheme racket在方案球拍中编写有效的功能
【发布时间】:2014-04-30 16:30:48
【问题描述】:

我是一名学生,不熟悉方案语言。 我正在尝试编写高效的函数。 我已经知道如何计算函数的执行时间,但我想知道的是如何计算该函数的堆栈(或内存)利用率。 因为据我所知,执行期间在堆栈上等待的指令数量越少,效率就越高。

那么有没有办法计算堆栈上等待的指令数?

【问题讨论】:

标签: scheme racket stack-trace performance stack-size


【解决方案1】:

不,在标准 Scheme 中没有“计算在堆栈上等待的指令数的方法”。

如果您正在学习 Scheme,那么关注效率、函数的执行时间和堆栈/内存利用率是完全错误的。 “过早的优化是编程中万恶(或至少是大部分)的根源。” D. Knuth - 在您质疑的层面上过于关注优化。

您应该在算法计算复杂性的层面上进行思考,如果您开始递归地表达算法,正如 Scheme 所鼓励的那样,那么就开始学习尾递归(因为 Scheme 保证它们针对迭代进行了优化)。

【讨论】:

  • 谢谢。但不幸的是,这正是教授在 5 节课后要求的!
  • 没办法数?我想典型的二叉树递归将使用帧log(n) 平均值和帧n/2 最坏情况。你不同意吗?
  • 'frames' 不是指令;编译器优化掉帧; “堆栈(或内存)”因功能而异;在您的“订单分析”中,您遗漏了一个因素C'。
猜你喜欢
  • 1970-01-01
  • 2012-02-03
  • 2020-06-14
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2014-03-08
  • 1970-01-01
相关资源
最近更新 更多