Indexes for key/value tables in layers
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- performance
Direzione di ricerca
Leggere include/vtzero/builder_impl.hpp per l'indice integrato, doc/advanced.md per property_mapper e include/vtzero/index.hpp per gli indici forniti. Il benchmarking con dati reali e la decisione se migliorare l'implementazione integrata o aggiungere flat map basate su vector è ancora un'attività di progettazione aperta, quindi l'issue non definisce uno stato di completamento specifico.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This issue documents the current state of affairs concerning indexes for key/value tables. Other issues can refer back to this for context.
When building a new layer you need to populate the key/value tables while adding new properties. There are several ways of doing this:
- Use the builtin index. This is the easiest choice, but performance isn't great. It uses a flat vector with linear search for small numbers of entries or an
std::unordered_mapwhen there are more. Some quick benchmarks show that the current value of 20 entries beyond which the implementation switches tostd::unordered_mapis reasonable. - Use the
property_mapper. This is the best choice when copying some features (or some properties of some features) from one existing layer, it is more than twice as fast as the builtin index. - Use one of the supplied indexes in
index.hpp. - Do everything yourself. You know the data best that you are adding and can choose the right strategy.
Medium term we should think about a better implementation for (1), but this needs more benchmarks with real data and different implementations to find the best one. Because this is hidden from the user of the library, we can always improve on this later.
It is unlikely that we'll find a much better approach for (2) than the current one. But this is only usable in very specific circumstances.
We can always add to (3), for instance adding vector-based flat maps with linear search.
- Lingua principale
- C++
- Stelle
- 106
- Fork
- 29
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
sudoevolve/EUI-NEO#80 ·
-
upstream update
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
conan-io/conan-center-index#31098 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
ml-explore/mlx-c#136 ·