Function: internal--hash-table-histogram

internal--hash-table-histogram is a function defined in fns.c.

Signature

(internal--hash-table-histogram HASH-TABLE)

Documentation

Bucket size histogram of HASH-TABLE. Internal use only.

Source Code

// Defined in /usr/src/emacs/src/fns.c
{
  struct Lisp_Hash_Table *h = check_hash_table (hash_table);
  ptrdiff_t size = HASH_TABLE_SIZE (h);
  ptrdiff_t *freq = xzalloc (size * sizeof *freq);
  ptrdiff_t index_size = hash_table_index_size (h);
  for (ptrdiff_t i = 0; i < index_size; i++)
    {
      ptrdiff_t n = 0;
      for (ptrdiff_t j = HASH_INDEX (h, i); j != -1; j = HASH_NEXT (h, j))
	n++;
      if (n > 0)
	freq[n - 1]++;
    }
  Lisp_Object ret = Qnil;
  for (ptrdiff_t i = 0; i < size; i++)
    if (freq[i] > 0)
      ret = Fcons (Fcons (make_int (i + 1), make_int (freq[i])),
		   ret);
  xfree (freq);
  return Fnreverse (ret);
}