在scheme racket中编写有效函数

在scheme racket中编写有效函数,scheme,racket,stack-trace,performance,stack-size,Scheme,Racket,Stack Trace,Performance,Stack Size,我是一名学生,不熟悉语言。 我正在尝试编写有效的函数。 我已经知道如何计算函数的执行时间,但我想知道的是如何计算该函数的堆栈(或内存)利用率。 因为我知道,在执行过程中,堆栈上等待的指令数量越少,效率就越高 那么,有没有办法计算堆栈上等待的指令数呢?没有,在标准方案中没有“计算堆栈上等待的指令数的办法” 如果您正在学习Scheme,那么关注效率、函数的执行时间和堆栈/内存利用率是完全错误的。“过早的优化是编程中所有邪恶(或至少大部分)的根源。”D.Knuth——过分关注你所质疑的优化水平 您应该

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


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

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

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


您应该从算法计算复杂性的角度来思考,如果您开始递归地表达算法,正如Scheme所鼓励的那样,那么就开始学习尾部递归(因为Scheme保证它们是针对迭代优化的).

您可能会对此感兴趣,您可能想了解并在中定义。大多数方案不提供“用户地”方式来获取此信息。如果您真的需要它,您可以找到异常回溯是如何在实现的源代码中存储和构造的,但是这当然不是初学者的任务。谢谢。但不幸的是,这正是教授在5节课后提出的要求!!没办法数数?我想象一个典型的二叉树递归将使用framelog(n)average和framen/2最坏情况。你不同意吗?“框架”不是指令;编译器优化掉帧;'堆栈(或内存)“因功能而异;在“订单分析”中,您遗漏了一个系数
C
”。