3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-08 17:01:55 +00:00

improve perf

This commit is contained in:
Don Syme 2025-09-17 00:58:15 +01:00
parent b858070387
commit 6fe095c40c
2 changed files with 3 additions and 5 deletions

View file

@ -6,7 +6,7 @@
#include <random> #include <random>
struct int_hash { struct int_hash {
unsigned operator()(int k) const { return static_cast<unsigned>(k); } unsigned operator()(int k) const { return static_cast<unsigned>(k) * 2654435761U; }
}; };
struct int_eq { struct int_eq {

View file

@ -26,7 +26,7 @@ Revision History:
#include "util/memory_manager.h" #include "util/memory_manager.h"
#include "util/hash.h" #include "util/hash.h"
#include "util/vector.h" #include "util/vector.h"
#ifdef __builtin_prefetch #ifdef __has_builtin(__builtin_prefetch)
#define HASHTABLE_PREFETCH(addr) __builtin_prefetch(addr, 0, 3) #define HASHTABLE_PREFETCH(addr) __builtin_prefetch(addr, 0, 3)
#else #else
#define HASHTABLE_PREFETCH(addr) ((void)0) #define HASHTABLE_PREFETCH(addr) ((void)0)
@ -65,14 +65,12 @@ public:
bool is_free() const { return m_state == HT_FREE; } bool is_free() const { return m_state == HT_FREE; }
bool is_deleted() const { return m_state == HT_DELETED; } bool is_deleted() const { return m_state == HT_DELETED; }
bool is_used() const { return m_state == HT_USED; } bool is_used() const { return m_state == HT_USED; }
unsigned char get_probe_distance() const { return m_probe_distance; }
T & get_data() { return m_data; } T & get_data() { return m_data; }
const T & get_data() const { return m_data; } const T & get_data() const { return m_data; }
void set_data(T && d) { m_data = std::move(d); m_state = HT_USED; } void set_data(T && d) { m_data = std::move(d); m_state = HT_USED; }
void set_hash(unsigned h) { m_hash = h; } void set_hash(unsigned h) { m_hash = h; }
void set_probe_distance(unsigned char dist) { m_probe_distance = dist; }
void mark_as_deleted() { m_state = HT_DELETED; } void mark_as_deleted() { m_state = HT_DELETED; }
void mark_as_free() { m_state = HT_FREE; m_probe_distance = 0; } void mark_as_free() { m_state = HT_FREE; }
}; };
/** /**