返回介绍

数学基础

统计学习

深度学习

工具

Scala

十五、性能

发布于 2023-07-17 23:38:22 字数 3920 浏览 0 评论 0 收藏 0

  1. 不可变序列的性能特征:

    headtailapplyupdateprependappendinsert
    ListCCLLCL-
    StreamCCLLCL-
    VectoreCeCeCeCeCeC-
    StackCCLLCL-
    QueueaCaCLLLC-
    RangeCCC----
    StringCLCLLL-

    其中:

    • C 表示 $ O(1 ) $ 的常量时间复杂度。
    • eC 表示从效果上来看是常量时间复杂度,但是这取决于某些前提假设,如:假设向量的最大长度或者哈希键的分布情况。
    • aC 表示平摊的常量时间复杂度。该操作的某些调用可能会耗时一些,但是大量操作的平均时间为常量时间。
    • L 表示 $ O(n) $ 的线性时间复杂度。
    • Log 表示 $ O(\log n) $ 的对数时间复杂度。
    • - 表示对应的集合不支持该操作。

    每一列表示:

    • head:选择序列的第一个元素。
    • tail:选择序列除了第一个元素之外的外部元素集合。
    • apply:下标索引。
    • update:对不可变序列执行函数式更新(updated 方法),对可变序列执行原地更新(update 方法)。
    • prepend:将元素添加到序列头部。对不可变序列而言,该操作创建一个新的序列;对可变序列而言,该操作执行原地修改。
    • append:将元素添加到序列尾部。对不可变序列而言,该操作创建一个新的序列;对可变序列而言,该操作执行原地修改。
    • insert:将元素插入到序列中的指定位置。该操作只对可变序列有效。
  2. 可变序列的性能特征:

    headtailapplyupdateprependappendinsert
    ArrayBufferCLCCLaCL
    ListBufferCLLLCCL
    StringBuilderCLCCLaCL
    MutableListCLLLCCL
    QueueCLLLCCL
    ArraySeqCLCC---
    StackCLLLCLL
    ArrayStackCLCCaCLL
    ArrayCLCC---
  3. 不可变 Set/Map 的性能特征:

    lookupaddremovemin
    HashSet/HashMapeCeCeCL
    TreeSet/TreeMapLogLogLogLog
    BitSetCLLeC
    ListMapLLLL
  4. 可变 Set/Map 的性能特征:

    lookupaddremovemin
    HashSet/HashMapeCeCeCL
    WeakHashMapeCeCeCL
    BitSetCaCCeC

    其中每一列表示:

    • lookup:测试某个元素是否包含在set 中,或者选择某个 key 关联的值。
    • add:添加新元素到集合中。
    • remove:从集合中移除元素。
    • minset 的最小元素,或者map 的最小key

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文