Skip to content

Document all the performance #16301

Closed
Closed
@Gankra

Description

@Gankra

This is, I guess, a metabug.

As I discuss in #16267, I believe that libcollections should provide both high-level asymptotic performance as well as practical performance guidelines (e.g. Vec.push is faster than RingBuf.push and DList.push for most workloads) for all relevant functions and methods.

The biggest open question in my mind is whether performance should be indistinguishable from regular documentation, or take on a special form that Rustdoc can manipulate. For instance, perf docs could be prefixed by //? or placed in an annotation like [#perf-time(O(1) amor.)]. The former would need further special syntax to differentiate time/space information, the latter would need some augmentation to permit extended discussion.

Regardless of the form it takes, making this available to Rustdoc would allow some cool stuff like Traits including a performance table for their implementers. See Qt's Algorithmic Complexity section for an example of what these tables might look like.

I would also suggest we adopt the following notation conventions, or something similar:

  • O(n): Worst-case bound
  • *O(n): Amortized bound
  • ~O(n): Expected bound

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions