Comments (5)
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.
If I understand correctly, could you not then get around large total_order
s 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.
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.
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.
That makes sense. For sure it would be a sub-optimal solution.
from copse.
Related Issues (7)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from copse.