代码之家  ›  专栏  ›  技术社区  ›  MadPhysicist

不同序列类型通用Lisp中elt函数的时间复杂度

  •  5
  • MadPhysicist  · 技术社区  · 8 年前

    我试图了解 ELT 函数在涉及不同序列类型时工作。

    显然,当一个列表传递给它时,性能是有序的。 O(n) . 是不是说从 VECTORP 顺序是有序的 O(1) ? 一根绳子怎么样?

    似乎没有在上指定 HyperSpec 或者常见的口齿不清的语言。

    1 回复  |  直到 8 年前
        1
  •  6
  •   sds Niraj Rajbhandari    8 年前

    一般来说,ansi cl标准没有指定实现 细节-包括性能问题,比如这个。另一个例子 是否取消尾叫,由方案强制执行,但不是cl。 当然,这并不意味着标准的作者 不注意性能(参见“性能影响”一节 issue 写下)。

    也就是说,你可以放心地假设 elt O(1) vector S(包括 string s)。

    我不认为 ELT 但经常使用-主要是因为 通常知道 矢量 或A list 实际使用。 使用 aref / char / nth 作为额外的代码文档。

    ps.cl和scheme之间这种巨大差异的基本原理是,该方案的起源是 教学 :它的用户是新来的学生,他们应该学习计算机编程作为表达算法想法的一种方法,因此他们应该有一个相对简单的工具和明确的行为定义。 美国国家标准学会 history 这表明该标准是一些现有供应商为更好的可移植性而努力的结果,也就是说,为了使竞争更加公平。听众是经验丰富的程序员,他们知道交易,并且能够理解性能权衡。

    推荐文章