Commit 7b4f6392 authored by Matthias Braun's avatar Matthias Braun
Browse files

remove STATS code alternative

parent e0bb4a52
...@@ -228,18 +228,7 @@ FIRM_API void pset_insert_pset_ptr(pset *target, pset *src); ...@@ -228,18 +228,7 @@ FIRM_API void pset_insert_pset_ptr(pset *target, pset *src);
#define pset_hinsert(pset, key, hash) \ #define pset_hinsert(pset, key, hash) \
((pset_entry *)_pset_search ((pset), (key), (hash), _pset_hinsert)) ((pset_entry *)_pset_search ((pset), (key), (hash), _pset_hinsert))
#ifdef STATS /** @privatesection */
/**
* Prints statistics on a set to stdout.
*
* @param pset the pset
*/
void pset_stats (pset *pset);
#else
# define pset_stats(s) ((void)0)
#endif
/* Private */
typedef enum { _pset_find, _pset_insert, _pset_hinsert } _pset_action; typedef enum { _pset_find, _pset_insert, _pset_hinsert } _pset_action;
......
...@@ -202,17 +202,6 @@ FIRM_API void set_break(set *set); ...@@ -202,17 +202,6 @@ FIRM_API void set_break(set *set);
#define set_hinsert0(set, key, size, hash) \ #define set_hinsert0(set, key, size, hash) \
((set_entry *)_set_search ((set), (key), (size), (hash), _set_hinsert0)) ((set_entry *)_set_search ((set), (key), (size), (hash), _set_hinsert0))
#ifdef STATS
/**
* Prints statistics on a set to stdout.
*
* @param set the set
*/
void set_stats (set *set);
#else
# define set_stats(s) ((void)0)
#endif
/* Private */ /* Private */
typedef enum { _set_find, _set_insert, _set_hinsert, _set_hinsert0 } _set_action; typedef enum { _set_find, _set_insert, _set_hinsert, _set_hinsert0 } _set_action;
......
...@@ -102,43 +102,9 @@ struct SET { ...@@ -102,43 +102,9 @@ struct SET {
Element *free_list; /**< list of free Elements */ Element *free_list; /**< list of free Elements */
#endif #endif
struct obstack obst; /**< obstack for allocation all data */ struct obstack obst; /**< obstack for allocation all data */
#ifdef STATS
size_t naccess, ncollision, ndups;
size_t max_chain_len;
#endif
}; };
#ifdef STATS
void MANGLEP(stats) (SET *table)
{
size_t nfree = 0;
#ifdef PSET
Element *q = table->free_list;
while (q) { q = q->chain; ++nfree; }
#endif
lc_printf(" accesses collisions keys duplicates longest wasted\n%12zu%12zu%12zu%12zu%12zu%12zu\n",
table->naccess, table->ncollision, table->nkey, table->ndups, table->max_chain_len, nfree);
}
static inline void stat_chain_len(SET *table, size_t chain_len)
{
table->ncollision += chain_len;
if (table->max_chain_len < chain_len) table->max_chain_len = chain_len;
}
# define stat_access(table) (++(table)->naccess)
# define stat_dup(table) (++(table)->ndups)
#else /* !STATS */
# define stat_chain_len(table, chain_len) ((void)chain_len)
# define stat_access(table) ((void)0)
# define stat_dup(table) ((void)0)
#endif /* !STATS */
SET *(PMANGLE(new)) (MANGLEP(cmp_fun) cmp, size_t nslots) SET *(PMANGLE(new)) (MANGLEP(cmp_fun) cmp, size_t nslots)
{ {
SET *table = XMALLOC(SET); SET *table = XMALLOC(SET);
...@@ -168,10 +134,6 @@ SET *(PMANGLE(new)) (MANGLEP(cmp_fun) cmp, size_t nslots) ...@@ -168,10 +134,6 @@ SET *(PMANGLE(new)) (MANGLEP(cmp_fun) cmp, size_t nslots)
table->nseg++; table->nseg++;
} }
#ifdef STATS
table->naccess = table->ncollision = table->ndups = 0;
table->max_chain_len = 0;
#endif
return table; return table;
} }
...@@ -345,11 +307,9 @@ void * MANGLE(_,_search) (SET *table, ...@@ -345,11 +307,9 @@ void * MANGLE(_,_search) (SET *table,
int SegmentIndex; int SegmentIndex;
MANGLEP(cmp_fun) cmp = table->cmp; MANGLEP(cmp_fun) cmp = table->cmp;
Segment q; Segment q;
size_t chain_len = 0;
assert (table); assert (table);
assert (key); assert (key);
stat_access (table);
/* Find collision chain */ /* Find collision chain */
h = Hash (table, hash); h = Hash (table, hash);
...@@ -361,16 +321,11 @@ void * MANGLE(_,_search) (SET *table, ...@@ -361,16 +321,11 @@ void * MANGLE(_,_search) (SET *table,
/* Follow collision chain */ /* Follow collision chain */
while (q && !EQUAL (cmp, q, key, size)) { while (q && !EQUAL (cmp, q, key, size)) {
q = q->chain; q = q->chain;
++chain_len;
} }
stat_chain_len(table, chain_len);
if (!q && (action != MANGLE(_,_find))) { /* not found, insert */ if (!q && (action != MANGLE(_,_find))) { /* not found, insert */
assert (!table->iter_tail && "insert an element into a set that is iterated"); assert (!table->iter_tail && "insert an element into a set that is iterated");
if (CurrentSegment[SegmentIndex]) stat_dup (table);
#ifdef PSET #ifdef PSET
if (table->free_list) { if (table->free_list) {
q = table->free_list; q = table->free_list;
...@@ -422,10 +377,8 @@ void *pset_remove(SET *table, const void *key, unsigned hash) ...@@ -422,10 +377,8 @@ void *pset_remove(SET *table, const void *key, unsigned hash)
pset_cmp_fun cmp = table->cmp; pset_cmp_fun cmp = table->cmp;
Segment *p; Segment *p;
Segment q; Segment q;
int chain_len = 0;
assert (table && !table->iter_tail); assert (table && !table->iter_tail);
stat_access (table);
/* Find collision chain */ /* Find collision chain */
h = Hash (table, hash); h = Hash (table, hash);
...@@ -438,11 +391,8 @@ void *pset_remove(SET *table, const void *key, unsigned hash) ...@@ -438,11 +391,8 @@ void *pset_remove(SET *table, const void *key, unsigned hash)
while (!EQUAL (cmp, *p, key, size)) { while (!EQUAL (cmp, *p, key, size)) {
p = &(*p)->chain; p = &(*p)->chain;
assert (*p); assert (*p);
++chain_len;
} }
stat_chain_len (table, chain_len);
q = *p; q = *p;
if (q == table->iter_tail) { if (q == table->iter_tail) {
......
...@@ -798,10 +798,6 @@ struct pset { ...@@ -798,10 +798,6 @@ struct pset {
pset_Element *iter_tail; /**< non-NULL while iterating over elts */ pset_Element *iter_tail; /**< non-NULL while iterating over elts */
pset_Element *free_list; /**< list of free Elements */ pset_Element *free_list; /**< list of free Elements */
struct obstack obst; /**< obstack for allocation all data */ struct obstack obst; /**< obstack for allocation all data */
#ifdef STATS
int naccess, ncollision, ndups;
int max_chain_len;
#endif
}; };
typedef struct set_element { typedef struct set_element {
...@@ -820,10 +816,6 @@ struct set { ...@@ -820,10 +816,6 @@ struct set {
unsigned iter_i, iter_j; unsigned iter_i, iter_j;
set_Element *iter_tail; /**< non-NULL while iterating over elts */ set_Element *iter_tail; /**< non-NULL while iterating over elts */
struct obstack obst; /**< obstack for allocation all data */ struct obstack obst; /**< obstack for allocation all data */
#ifdef STATS
int naccess, ncollision, ndups;
int max_chain_len;
#endif
}; };
/** /**
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment