Comments (5)
Hi @steven-varga. To help me understand exactly what your use case is, can you post the declaration of the sparse_hash_map that you used?
I have the feeling that the memory used by the hash table to index the 6000 symbols is negligible in comparison of the data stored (the 6e7 count/day), which doesn't depend on the hash table implementation. Thanks!
from sparsepp.
Yes indeed: it is about speed as opposed to footprint.
spp::sparse_hash_map<std::string, uint64_t> map1;
or spp::sparse_hash_map<uint64_t, uint64_t> map2;
Then I used auto it = map.find( key );
and inserted new ones upon failure.
The profiling showed the code path spends 50% on hash lookups, I tried a quick drop in, and didn't notice difference.
from sparsepp.
Ah, sparsepp is mostly about footprint, especially when inserting entries and resizing occurs (high water mark). Should be a little bit faster, though!
from sparsepp.
update: the attached pictures were identical, corrected mistake. The result is same runtime.
Profiling and runtime attached, done on: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz, runtime is near same, slight 1s difference when using std::map
hope it helps!
from sparsepp.
Hum, I don't know what to say here. The implementation of sparsepp require more copies (or move) of the hash table objects than a regular hash table, so for complex objects which are expensive to copy or move, sparsepp may not be the best alternative.
from sparsepp.
Related Issues (20)
- Support operator[] with rvalue HOT 1
- When hashing on vector HOT 13
- Help me to serialize/deserialize sparse_hash_map<int , vector< std::string > > HOT 1
- missing return value in function spp_sptr& operator=(spp_sptr &&o) ? HOT 1
- SIGSEGV on using move-assigned-from hash set HOT 3
- Unable to create map for value type with deleted copy constructor HOT 2
- Can't insert std::tuple: spp uses deleted constructor/destructor HOT 1
- Lookup non-present keys becomes very slow. HOT 1
- Do you support C++11 stateful allocators? HOT 1
- Default allocator doesn't throw and caller doesn't check for NULL HOT 1
- SEGV after moving hash_map HOT 2
- conan package HOT 2
- sparse_hash_map<uint32_t, uint64_t> takes more memory than sparse_hash_map<uint64_t, uint64_t> HOT 1
- memcpy can happen with null "source" parameter HOT 6
- class-memaccess warning when compiling with GCC 8 or later HOT 1
- Problem when compiling on macOS catalina HOT 6
- Can sparse_hash_map support unique_ptr?
- Compiler warning on realloc call within sparsepp. HOT 1
- Error when compile: is not a special member function which can be defaulted HOT 2
- Missing return value. HOT 2
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 sparsepp.