Code Monkey home page Code Monkey logo

Comments (5)

eggyal avatar eggyal commented on July 20, 2024

The problem with newtyping the contained values so that they each hold runtime state required for ordering is that such state must be duplicated across every element in the collection. This has both time and space costs that can be avoided if that state is stored only once per collection.

from copse.

ripytide avatar ripytide commented on July 20, 2024

If I understand correctly, could you not then get around large total_orders by storing a Rc<impl TotalOrded> instead and storing the TotalOrder just the once in the BTreeMap Wrapper? Since there is only one impl TotalOrder per BTreeMap?

from copse.

eggyal avatar eggyal commented on July 20, 2024

Sure, but that still stores an additional pointer per element and suffers the cost of indirection to reach the ordering (in addition to the cost of the Rc's, or Arc's if multithreaded, alloc + refcounting).

from copse.

eggyal avatar eggyal commented on July 20, 2024

Also, your CustomOrdApplicator implementation above assumes that self and other have the same total_order. Perhaps if the library is carefully written, that assumption can be ensured, but to be strictly correct cmp should compare the total_order of the two arguments... and, if they differ, I guess its only option would be to panic? That would add additional cost too.

The outer wrapper type would furthermore have to do translation to/from the stored newtyped keys, which also adds further cost.

from copse.

ripytide avatar ripytide commented on July 20, 2024

That makes sense. For sure it would be a sub-optimal solution.

from copse.

Related Issues (7)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.