4 #include "testing/testing.h"
6 #define GHASH_INTERNAL_API
20 # define TEXT_CORPUS_PATH \
21 "/path/to/Téléchargements/eng_wikipedia_2010_1M-text/eng_wikipedia_2010_1M-sentences.txt"
31 #define TESTCASE_SIZE_SMALL 17
33 #define PRINTF_GHASH_STATS(_gh) \
35 double q, lf, var, pempty, poverloaded; \
37 q = BLI_ghash_calc_quality_ex((_gh), &lf, &var, &pempty, &poverloaded, &bigb); \
39 "GHash stats (%u entries):\n\t" \
40 "Quality (the lower the better): %f\n\tVariance (the lower the better): %f\n\tLoad: " \
42 "Empty buckets: %.2f%%\n\tOverloaded buckets: %.2f%% (biggest bucket: %d)\n", \
48 poverloaded * 100.0, \
57 printf(
"\n========== STARTING %s ==========\n",
id);
59 #ifdef TEXT_CORPUS_PATH
64 if (stat(TEXT_CORPUS_PATH, &
st) == 0)
65 data_size =
st.st_size;
68 FILE *f = fopen(TEXT_CORPUS_PATH,
"r");
71 if (fread(
data,
sizeof(*
data), data_size, f) != data_size) {
72 printf(
"ERROR in reading file %s!", TEXT_CORPUS_PATH);
76 data[data_size] =
'\0';
90 char *p, *
w, *c_p, *c_w;
100 for (p = c_p = data_p,
w = c_w = data_w; *c_w; c_w++, c_p++) {
112 else if (*c_w ==
' ') {
135 for (p =
w =
c = data_bis; *
c;
c++) {
144 else if (*
c ==
' ') {
161 printf(
"========== ENDED %s ==========\n\n",
id);
182 printf(
"\n========== STARTING %s ==========\n",
id);
185 unsigned int i =
count;
203 unsigned int i =
count;
232 printf(
"========== ENDED %s ==========\n\n",
id);
243 TEST(ghash, IntGHash100000000)
259 TEST(ghash, IntMurmur2a100000000)
271 printf(
"\n========== STARTING %s ==========\n",
id);
315 printf(
"========== ENDED %s ==========\n\n",
id);
326 TEST(ghash, IntRandGHash50000000)
334 TEST(ghash, IntRandMurmur2a12000)
342 TEST(ghash, IntRandMurmur2a50000000)
368 TEST(ghash, Int4NoHash50000000)
380 printf(
"\n========== STARTING %s ==========\n",
id);
382 void *data_v =
MEM_mallocN(
sizeof(
unsigned int[4]) * (
size_t)
count, __func__);
383 unsigned int(*
data)[4] = (
unsigned int(*)[4])data_v;
384 unsigned int(*dt)[4];
427 printf(
"========== ENDED %s ==========\n\n",
id);
439 TEST(ghash, Int4GHash20000000)
457 TEST(ghash, Int4Murmur2a20000000)
475 TEST(ghash, Int2NoHash50000000)
515 printf(
"\n========== STARTING %s ==========\n",
id);
521 unsigned int i =
count;
524 (!(i % 100) ? 100 : (!(i % 10) ? 10 : 1));
532 unsigned int i =
count;
535 (!(i % 100) ? 100 : (!(i % 10) ? 10 : 1));
544 printf(
"========== ENDED %s ==========\n\n",
id);
547 TEST(ghash, MultiRandIntGHash2000)
554 TEST(ghash, MultiRandIntGHash200000)
561 TEST(ghash, MultiRandIntMurmur2a2000)
568 TEST(ghash, MultiRandIntMurmur2a200000)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
bool BLI_ghashutil_strcmp(const void *a, const void *b)
unsigned int BLI_ghashutil_inthash_p_murmur(const void *ptr)
#define BLI_ghashutil_uinthash_v4_p_murmur
bool BLI_ghash_haskey(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_pop(GHash *gh, GHashIterState *state, void **r_key, void **r_val) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_ghash_clear(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
unsigned int BLI_ghashutil_strhash_p(const void *ptr)
GHash * BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
#define BLI_ghashutil_uinthash_v4_p
void BLI_ghash_reserve(GHash *gh, unsigned int nentries_reserve)
bool BLI_ghashutil_intcmp(const void *a, const void *b)
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
unsigned int BLI_ghash_len(const GHash *gh) ATTR_WARN_UNUSED_RESULT
unsigned int BLI_ghashutil_inthash_p(const void *ptr)
unsigned int BLI_ghashutil_strhash_p_murmur(const void *ptr)
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
bool BLI_ghashutil_uinthash_v4_cmp(const void *a, const void *b)
void int BLI_rng_get_int(struct RNG *rng) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_rng_free(struct RNG *rng) ATTR_NONNULL(1)
unsigned int BLI_rng_get_uint(struct RNG *rng) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
struct RNG * BLI_rng_new(unsigned int seed)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
#define POINTER_FROM_INT(i)
#define POINTER_AS_UINT(i)
#define POINTER_AS_INT(i)
#define POINTER_FROM_UINT(i)
Read Guarded memory(de)allocation.
Utility defines for timing/benchmarks.
#define TIMEIT_START(var)
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
static const pxr::TfToken st("st", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)