Improve memory statistics report readability.
2019-02-26 Martin Liska <mliska@suse.cz> * alloc-pool.h (struct pool_usage): Remove extra print_dash_line. * bitmap.h (struct bitmap_usage): Likewise. * ggc-common.c (struct ggc_usage): Likewise. * mem-stats.h (struct mem_usage): Likewise. (mem_alloc_description::dump): Print dash lines here and repeat header at the end of a table report. It's then more readable. * tree-phinodes.c (phinodes_print_statistics): Make horizontal alignment. * tree-ssanames.c (ssanames_print_statistics): Likewise. * vec.c (struct vec_usage): Remove extra print_dash_line. * vec.h (vec_safe_grow_cleared): Pass PASS_MEM_STAT. 2019-02-26 Martin Liska <mliska@suse.cz> * symtab.c (ht_dump_statistics): Make horizontal alignment for statistics. From-SVN: r269221
This commit is contained in:
parent
24f0c84247
commit
60448173c4
@ -1,3 +1,19 @@
|
||||
2019-02-26 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* alloc-pool.h (struct pool_usage): Remove extra
|
||||
print_dash_line.
|
||||
* bitmap.h (struct bitmap_usage): Likewise.
|
||||
* ggc-common.c (struct ggc_usage): Likewise.
|
||||
* mem-stats.h (struct mem_usage): Likewise.
|
||||
(mem_alloc_description::dump): Print dash lines
|
||||
here and repeat header at the end of a table report.
|
||||
It's then more readable.
|
||||
* tree-phinodes.c (phinodes_print_statistics): Make
|
||||
horizontal alignment.
|
||||
* tree-ssanames.c (ssanames_print_statistics): Likewise.
|
||||
* vec.c (struct vec_usage): Remove extra print_dash_line.
|
||||
* vec.h (vec_safe_grow_cleared): Pass PASS_MEM_STAT.
|
||||
|
||||
2019-02-26 Uroš Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* doc/extend.texi (__builtin_object_size):
|
||||
|
@ -83,17 +83,14 @@ struct pool_usage: public mem_usage
|
||||
{
|
||||
fprintf (stderr, "%-32s%-48s %6s%11s%16s%17s%12s\n", "Pool name", name,
|
||||
"Pools", "Leak", "Peak", "Times", "Elt size");
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Dump footer. */
|
||||
inline void
|
||||
dump_footer ()
|
||||
{
|
||||
print_dash_line ();
|
||||
fprintf (stderr, "%s" PRsa(82) PRsa(10) "\n", "Total",
|
||||
SIZE_AMOUNT (m_instances), SIZE_AMOUNT (m_allocated));
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Element size. */
|
||||
|
@ -258,7 +258,6 @@ struct bitmap_usage: public mem_usage
|
||||
{
|
||||
fprintf (stderr, "%-48s %11s%16s%17s%12s%12s%10s\n", name, "Leak", "Peak",
|
||||
"Times", "N searches", "Search iter", "Type");
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Number search operations. */
|
||||
|
@ -910,9 +910,7 @@ struct ggc_usage: public mem_usage
|
||||
inline void
|
||||
dump_footer ()
|
||||
{
|
||||
print_dash_line ();
|
||||
dump ("Total", *this);
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Get balance which is GGC allocation leak. */
|
||||
@ -955,7 +953,6 @@ struct ggc_usage: public mem_usage
|
||||
{
|
||||
fprintf (stderr, "%-48s %11s%17s%17s%16s%17s\n", name, "Garbage", "Freed",
|
||||
"Leak", "Overhead", "Times");
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Freed memory in bytes. */
|
||||
|
@ -219,10 +219,8 @@ struct mem_usage
|
||||
inline void
|
||||
dump_footer () const
|
||||
{
|
||||
print_dash_line ();
|
||||
fprintf (stderr, "%s" PRsa (53) PRsa (26) "\n", "Total",
|
||||
SIZE_AMOUNT (m_allocated), SIZE_AMOUNT (m_times));
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Return fraction of NOMINATOR and DENOMINATOR in percent. */
|
||||
@ -247,7 +245,6 @@ struct mem_usage
|
||||
{
|
||||
fprintf (stderr, "%-48s %11s%16s%10s%17s\n", name, "Leak", "Peak",
|
||||
"Times", "Type");
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Current number of allocated bytes. */
|
||||
@ -631,11 +628,17 @@ mem_alloc_description<T>::dump (mem_alloc_origin origin,
|
||||
mem_list_t *list = get_list (origin, &length, cmp);
|
||||
T total = get_sum (origin);
|
||||
|
||||
T::print_dash_line ();
|
||||
T::dump_header (mem_location::get_origin_name (origin));
|
||||
T::print_dash_line ();
|
||||
for (int i = length - 1; i >= 0; i--)
|
||||
list[i].second->dump (list[i].first, total);
|
||||
T::print_dash_line ();
|
||||
|
||||
T::dump_header (mem_location::get_origin_name (origin));
|
||||
T::print_dash_line ();
|
||||
total.dump_footer ();
|
||||
T::print_dash_line ();
|
||||
|
||||
XDELETEVEC (list);
|
||||
|
||||
|
@ -80,9 +80,9 @@ unsigned int phi_nodes_created;
|
||||
void
|
||||
phinodes_print_statistics (void)
|
||||
{
|
||||
fprintf (stderr, "PHI nodes allocated: " PRsa (11) "\n",
|
||||
fprintf (stderr, "%-32s" PRsa (11) "\n", "PHI nodes allocated:",
|
||||
SIZE_AMOUNT (phi_nodes_created));
|
||||
fprintf (stderr, "PHI nodes reused: " PRsa (11) "\n",
|
||||
fprintf (stderr, "%-32s" PRsa (11) "\n", "PHI nodes reused:",
|
||||
SIZE_AMOUNT (phi_nodes_reused));
|
||||
}
|
||||
|
||||
|
@ -112,9 +112,9 @@ fini_ssanames (struct function *fn)
|
||||
void
|
||||
ssanames_print_statistics (void)
|
||||
{
|
||||
fprintf (stderr, "SSA_NAME nodes allocated: " PRsa (11) "\n",
|
||||
fprintf (stderr, "%-32s" PRsa (11) "\n", "SSA_NAME nodes allocated:",
|
||||
SIZE_AMOUNT (ssa_name_nodes_created));
|
||||
fprintf (stderr, "SSA_NAME nodes reused: " PRsa (11) "\n",
|
||||
fprintf (stderr, "%-32s" PRsa (11) "\n", "SSA_NAME nodes reused:",
|
||||
SIZE_AMOUNT (ssa_name_nodes_reused));
|
||||
}
|
||||
|
||||
|
@ -98,11 +98,9 @@ struct vec_usage: public mem_usage
|
||||
inline void
|
||||
dump_footer ()
|
||||
{
|
||||
print_dash_line ();
|
||||
fprintf (stderr, "%s" PRsa (64) PRsa (25) PRsa (16) "\n",
|
||||
"Total", SIZE_AMOUNT (m_allocated),
|
||||
SIZE_AMOUNT (m_times), SIZE_AMOUNT (m_items));
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Dump header with NAME. */
|
||||
@ -111,7 +109,6 @@ struct vec_usage: public mem_usage
|
||||
{
|
||||
fprintf (stderr, "%-48s %10s%11s%16s%10s%17s%11s\n", name, "sizeof(T)",
|
||||
"Leak", "Peak", "Times", "Leak items", "Peak items");
|
||||
print_dash_line ();
|
||||
}
|
||||
|
||||
/* Current number of items allocated. */
|
||||
|
@ -739,7 +739,7 @@ inline void
|
||||
vec_safe_grow_cleared (vec<T, va_heap, vl_ptr> *&v,
|
||||
unsigned len CXX_MEM_STAT_INFO)
|
||||
{
|
||||
v->safe_grow_cleared (len);
|
||||
v->safe_grow_cleared (len PASS_MEM_STAT);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-02-26 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* symtab.c (ht_dump_statistics): Make
|
||||
horizontal alignment for statistics.
|
||||
|
||||
2019-02-20 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
PR c/89410
|
||||
|
@ -306,39 +306,41 @@ ht_dump_statistics (cpp_hash_table *table)
|
||||
nelts = table->nelements;
|
||||
headers = table->nslots * sizeof (hashnode);
|
||||
|
||||
fprintf (stderr, "\nString pool\nentries\t\t%lu\n",
|
||||
fprintf (stderr, "\nString pool\n%-32s%lu\n", "entries:",
|
||||
(unsigned long) nelts);
|
||||
fprintf (stderr, "identifiers\t%lu (%.2f%%)\n",
|
||||
fprintf (stderr, "%-32s%lu (%.2f%%)\n", "identifiers:",
|
||||
(unsigned long) nids, nids * 100.0 / nelts);
|
||||
fprintf (stderr, "slots\t\t%lu\n",
|
||||
fprintf (stderr, "%-32s%lu\n", "slots:",
|
||||
(unsigned long) table->nslots);
|
||||
fprintf (stderr, "deleted\t\t%lu\n",
|
||||
fprintf (stderr, "%-32s%lu\n", "deleted:",
|
||||
(unsigned long) deleted);
|
||||
|
||||
if (table->alloc_subobject)
|
||||
fprintf (stderr, "GGC bytes\t%lu%c\n",
|
||||
fprintf (stderr, "%-32s%lu%c\n", "GGC bytes:",
|
||||
SCALE (total_bytes), LABEL (total_bytes));
|
||||
else
|
||||
{
|
||||
overhead = obstack_memory_used (&table->stack) - total_bytes;
|
||||
fprintf (stderr, "obstack bytes\t%lu%c (%lu%c overhead)\n",
|
||||
fprintf (stderr, "%-32s%lu%c (%lu%c overhead)\n",
|
||||
"obstack bytes:",
|
||||
SCALE (total_bytes), LABEL (total_bytes),
|
||||
SCALE (overhead), LABEL (overhead));
|
||||
}
|
||||
fprintf (stderr, "table size\t%lu%c\n",
|
||||
fprintf (stderr, "%-32s%lu%c\n", "table size:",
|
||||
SCALE (headers), LABEL (headers));
|
||||
|
||||
exp_len = (double)total_bytes / (double)nelts;
|
||||
exp2_len = exp_len * exp_len;
|
||||
exp_len2 = (double) sum_of_squares / (double) nelts;
|
||||
|
||||
fprintf (stderr, "coll/search\t%.4f\n",
|
||||
fprintf (stderr, "%-32s%.4f\n", "coll/search:",
|
||||
(double) table->collisions / (double) table->searches);
|
||||
fprintf (stderr, "ins/search\t%.4f\n",
|
||||
fprintf (stderr, "%-32s%.4f\n", "ins/search:",
|
||||
(double) nelts / (double) table->searches);
|
||||
fprintf (stderr, "avg. entry\t%.2f bytes (+/- %.2f)\n",
|
||||
fprintf (stderr, "%-32s%.2f bytes (+/- %.2f)\n",
|
||||
"avg. entry:",
|
||||
exp_len, approx_sqrt (exp_len2 - exp2_len));
|
||||
fprintf (stderr, "longest entry\t%lu\n",
|
||||
fprintf (stderr, "%-32s%lu\n", "longest entry:",
|
||||
(unsigned long) longest);
|
||||
#undef SCALE
|
||||
#undef LABEL
|
||||
|
Loading…
Reference in New Issue
Block a user