设定的运行时间!并从Scheme / Racket开始

时间:2012-10-27 20:28:07

标签: scheme racket

有谁知道{/ 1}}和set!的运行时在Scheme / Racket中是什么?

我认为begin是不变的,但我不确定。

4 个答案:

答案 0 :(得分:2)

设置!是O(1)。 Scheme和其他语言在这方面没有区别。

答案 1 :(得分:2)

set!操作只是将一个值与一个符号相关联(“绑定”),当然在任何自尊的编程语言中都是O(1)。根据实施细节,寻找绑定可能不一定是O(1),但这是完全不同的事情(我不知道Racket的具体细节)。

关于begin,这是一个排序形式,应用它没有成本本身,只有它的内容(它里面的表达式)将决定它的时间复杂度。 set!的相同内容, value 部分可能需要一些时间来评估,但set!操作本身为O(1)

答案 2 :(得分:2)

一个警告:设置!并开始两个都有子表达。如果其中任何一个需要很长时间,那么评估集合! (或开始)也将。

答案 3 :(得分:1)

如果您担心set!的表现,请记住避免变异可能会更快。请参阅Racket Guide: Mutation and Performance