Bitcoin Core  27.99.0
P2P Digital Currency
Public Member Functions | Private Attributes | List of all members
SaltedOutpointHasher Class Reference

#include <hasher.h>

Public Member Functions

 SaltedOutpointHasher (bool deterministic=false)
 
size_t operator() (const COutPoint &id) const noexcept
 Having the hash noexcept allows libstdc++'s unordered_map to recalculate the hash during rehash, so it does not have to cache the value. More...
 

Private Attributes

const uint64_t k0
 Salt. More...
 
const uint64_t k1
 

Detailed Description

Definition at line 32 of file hasher.h.

Constructor & Destructor Documentation

◆ SaltedOutpointHasher()

SaltedOutpointHasher::SaltedOutpointHasher ( bool  deterministic = false)

Definition at line 12 of file hasher.cpp.

Member Function Documentation

◆ operator()()

size_t SaltedOutpointHasher::operator() ( const COutPoint id) const
inlinenoexcept

Having the hash noexcept allows libstdc++'s unordered_map to recalculate the hash during rehash, so it does not have to cache the value.

This reduces node's memory by sizeof(size_t). The required recalculation has a slight performance penalty (around 1.6%), but this is compensated by memory savings of about 9% which allow for a larger dbcache setting.

See also
https://gcc.gnu.org/onlinedocs/gcc-13.2.0/libstdc++/manual/manual/unordered_associative.html

Definition at line 50 of file hasher.h.

Here is the call graph for this function:

Member Data Documentation

◆ k0

const uint64_t SaltedOutpointHasher::k0
private

Salt.

Definition at line 36 of file hasher.h.

◆ k1

const uint64_t SaltedOutpointHasher::k1
private

Definition at line 36 of file hasher.h.


The documentation for this class was generated from the following files: