xor fast hash storage: reorder initialization of elements, delete default c'tor, resetting of table may be expensive as it is rare
This commit is contained in:
		
							parent
							
								
									39edbcbabd
								
							
						
					
					
						commit
						527e6cbc72
					
				| @ -47,13 +47,15 @@ template <typename NodeID, typename Key> class XORFastHashStorage | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         HashCell(const HashCell &other) : key(other.key), id(other.id), time(other.time) {} | ||||
|         HashCell(const HashCell &other) : time(other.key), id(other.id), key(other.time) {} | ||||
| 
 | ||||
|         operator Key() const { return key; } | ||||
| 
 | ||||
|         void operator=(const Key key_to_insert) { key = key_to_insert; } | ||||
|     }; | ||||
| 
 | ||||
|     XORFastHashStorage() = delete; | ||||
| 
 | ||||
|     explicit XORFastHashStorage(size_t) : positions(2 << 16), current_timestamp(0) {} | ||||
| 
 | ||||
|     HashCell &operator[](const NodeID node) | ||||
| @ -86,12 +88,11 @@ template <typename NodeID, typename Key> class XORFastHashStorage | ||||
|         if (std::numeric_limits<unsigned>::max() == current_timestamp) | ||||
|         { | ||||
|             positions.clear(); | ||||
|             // positions.resize((2 << 16));
 | ||||
|             positions.resize(2 << 16); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|   private: | ||||
|     XORFastHashStorage() : positions(2 << 16), current_timestamp(0) {} | ||||
|     std::vector<HashCell> positions; | ||||
|     XORFastHash fast_hasher; | ||||
|     unsigned current_timestamp; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user