Remove callgrind's percentify and commify functions as well as the
assorted buffers that go with them.
Part of fixing BZ #337869.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14810 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/callgrind/global.h b/callgrind/global.h
index 5f0c68a..6f33050 100644
--- a/callgrind/global.h
+++ b/callgrind/global.h
@@ -127,9 +127,6 @@
/* Minimum cache line size allowed */
#define MIN_LINE_SIZE 16
-/* Size of various buffers used for storing strings */
-#define RESULTS_BUF_LEN 256
-
/*------------------------------------------------------------*/
/*--- Statistics ---*/
diff --git a/callgrind/sim.c b/callgrind/sim.c
index 805cda9..fe1e81e 100644
--- a/callgrind/sim.c
+++ b/callgrind/sim.c
@@ -1484,64 +1484,12 @@
return True;
}
-/* Adds commas to ULong, right justifying in a field field_width wide, returns
- * the string in buf. */
-static
-Int commify(ULong n, int field_width, HChar* buf)
-{
- int len, n_commas, i, j, new_len, space;
-
- VG_(sprintf)(buf, "%llu", n);
- len = VG_(strlen)(buf);
- n_commas = (len - 1) / 3;
- new_len = len + n_commas;
- space = field_width - new_len;
-
- /* Allow for printing a number in a field_width smaller than it's size */
- if (space < 0) space = 0;
-
- /* Make j = -1 because we copy the '\0' before doing the numbers in groups
- * of three. */
- for (j = -1, i = len ; i >= 0; i--) {
- buf[i + n_commas + space] = buf[i];
-
- if ((i>0) && (3 == ++j)) {
- j = 0;
- n_commas--;
- buf[i + n_commas + space] = ',';
- }
- }
- /* Right justify in field. */
- for (i = 0; i < space; i++) buf[i] = ' ';
- return new_len;
-}
-
-static
-void percentify(Int n, Int ex, Int field_width, HChar buf[])
-{
- int i, len, space;
-
- VG_(sprintf)(buf, "%d.%d%%", n / ex, n % ex);
- len = VG_(strlen)(buf);
- space = field_width - len;
- if (space < 0) space = 0; /* Allow for v. small field_width */
- i = len;
-
- /* Right justify in field */
- for ( ; i >= 0; i--) buf[i + space] = buf[i];
- for (i = 0; i < space; i++) buf[i] = ' ';
-}
-
static
void cachesim_printstat(Int l1, Int l2, Int l3)
{
FullCost total = CLG_(total_cost), D_total = 0;
ULong LL_total_m, LL_total_mr, LL_total_mw,
LL_total, LL_total_r, LL_total_w;
- HChar buf1[RESULTS_BUF_LEN],
- buf2[RESULTS_BUF_LEN],
- buf3[RESULTS_BUF_LEN];
- Int p;
if ((VG_(clo_verbosity) >1) && clo_simulate_hwpref) {
VG_(message)(Vg_DebugMsg, "Prefetch Up: %llu\n",
@@ -1551,24 +1499,21 @@
VG_(message)(Vg_DebugMsg, "\n");
}
- commify(total[fullOffset(EG_IR) +1], l1, buf1);
- VG_(message)(Vg_UserMsg, "I1 misses: %s\n", buf1);
+ VG_(message)(Vg_UserMsg, "I1 misses: %'*llu\n", l1,
+ total[fullOffset(EG_IR) +1]);
- commify(total[fullOffset(EG_IR) +2], l1, buf1);
- VG_(message)(Vg_UserMsg, "LLi misses: %s\n", buf1);
-
- p = 100;
+ VG_(message)(Vg_UserMsg, "LLi misses: %'*llu\n", l1,
+ total[fullOffset(EG_IR) +2]);
if (0 == total[fullOffset(EG_IR)])
total[fullOffset(EG_IR)] = 1;
- percentify(total[fullOffset(EG_IR)+1] * 100 * p /
- total[fullOffset(EG_IR)], p, l1+1, buf1);
- VG_(message)(Vg_UserMsg, "I1 miss rate: %s\n", buf1);
+ VG_(message)(Vg_UserMsg, "I1 miss rate: %*.2f%%\n", l1,
+ total[fullOffset(EG_IR)+1] * 100.0 / total[fullOffset(EG_IR)]);
- percentify(total[fullOffset(EG_IR)+2] * 100 * p /
- total[fullOffset(EG_IR)], p, l1+1, buf1);
- VG_(message)(Vg_UserMsg, "LLi miss rate: %s\n", buf1);
+ VG_(message)(Vg_UserMsg, "LLi miss rate: %*.2f%%\n", l1,
+ total[fullOffset(EG_IR)+2] * 100.0 / total[fullOffset(EG_IR)]);
+
VG_(message)(Vg_UserMsg, "\n");
/* D cache results.
@@ -1581,45 +1526,34 @@
CLG_(copy_cost)( CLG_(get_event_set)(EG_DR), D_total, total + fullOffset(EG_DR) );
CLG_(add_cost) ( CLG_(get_event_set)(EG_DW), D_total, total + fullOffset(EG_DW) );
- commify( D_total[0], l1, buf1);
- commify(total[fullOffset(EG_DR)], l2, buf2);
- commify(total[fullOffset(EG_DW)], l3, buf3);
- VG_(message)(Vg_UserMsg, "D refs: %s (%s rd + %s wr)\n",
- buf1, buf2, buf3);
+ VG_(message)(Vg_UserMsg, "D refs: %'*llu (%'*llu rd + %'*llu wr)\n",
+ l1, D_total[0],
+ l2, total[fullOffset(EG_DR)],
+ l3, total[fullOffset(EG_DW)]);
- commify( D_total[1], l1, buf1);
- commify(total[fullOffset(EG_DR)+1], l2, buf2);
- commify(total[fullOffset(EG_DW)+1], l3, buf3);
- VG_(message)(Vg_UserMsg, "D1 misses: %s (%s rd + %s wr)\n",
- buf1, buf2, buf3);
+ VG_(message)(Vg_UserMsg, "D1 misses: %'*llu (%'*llu rd + %'*llu wr)\n",
+ l1, D_total[1],
+ l2, total[fullOffset(EG_DR)+1],
+ l3, total[fullOffset(EG_DW)+1]);
- commify( D_total[2], l1, buf1);
- commify(total[fullOffset(EG_DR)+2], l2, buf2);
- commify(total[fullOffset(EG_DW)+2], l3, buf3);
- VG_(message)(Vg_UserMsg, "LLd misses: %s (%s rd + %s wr)\n",
- buf1, buf2, buf3);
+ VG_(message)(Vg_UserMsg, "LLd misses: %'*llu (%'*llu rd + %'*llu wr)\n",
+ l1, D_total[2],
+ l2, total[fullOffset(EG_DR)+2],
+ l3, total[fullOffset(EG_DW)+2]);
- p = 10;
-
if (0 == D_total[0]) D_total[0] = 1;
if (0 == total[fullOffset(EG_DR)]) total[fullOffset(EG_DR)] = 1;
if (0 == total[fullOffset(EG_DW)]) total[fullOffset(EG_DW)] = 1;
- percentify( D_total[1] * 100 * p / D_total[0], p, l1+1, buf1);
- percentify(total[fullOffset(EG_DR)+1] * 100 * p /
- total[fullOffset(EG_DR)], p, l2+1, buf2);
- percentify(total[fullOffset(EG_DW)+1] * 100 * p /
- total[fullOffset(EG_DW)], p, l3+1, buf3);
- VG_(message)(Vg_UserMsg, "D1 miss rate: %s (%s + %s )\n",
- buf1, buf2,buf3);
+ VG_(message)(Vg_UserMsg, "D1 miss rate: %*.1f%% (%*.1f%% + %*.1f%% )\n",
+ l1, D_total[1] * 100.0 / D_total[0],
+ l2, total[fullOffset(EG_DR)+1] * 100.0 / total[fullOffset(EG_DR)],
+ l3, total[fullOffset(EG_DW)+1] * 100.0 / total[fullOffset(EG_DW)]);
- percentify( D_total[2] * 100 * p / D_total[0], p, l1+1, buf1);
- percentify(total[fullOffset(EG_DR)+2] * 100 * p /
- total[fullOffset(EG_DR)], p, l2+1, buf2);
- percentify(total[fullOffset(EG_DW)+2] * 100 * p /
- total[fullOffset(EG_DW)], p, l3+1, buf3);
- VG_(message)(Vg_UserMsg, "LLd miss rate: %s (%s + %s )\n",
- buf1, buf2,buf3);
+ VG_(message)(Vg_UserMsg, "LLd miss rate: %*.1f%% (%*.1f%% + %*.1f%% )\n",
+ l1, D_total[2] * 100.0 / D_total[0],
+ l2, total[fullOffset(EG_DR)+2] * 100.0 / total[fullOffset(EG_DR)],
+ l3, total[fullOffset(EG_DW)+2] * 100.0 / total[fullOffset(EG_DW)]);
VG_(message)(Vg_UserMsg, "\n");
@@ -1634,11 +1568,8 @@
total[fullOffset(EG_DR) +1] +
total[fullOffset(EG_IR) +1];
LL_total_w = total[fullOffset(EG_DW) +1];
- commify(LL_total, l1, buf1);
- commify(LL_total_r, l2, buf2);
- commify(LL_total_w, l3, buf3);
- VG_(message)(Vg_UserMsg, "LL refs: %s (%s rd + %s wr)\n",
- buf1, buf2, buf3);
+ VG_(message)(Vg_UserMsg, "LL refs: %'*llu (%'*llu rd + %'*llu wr)\n",
+ l1, LL_total, l2, LL_total_r, l3, LL_total_w);
LL_total_m =
total[fullOffset(EG_DR) +2] +
@@ -1648,21 +1579,13 @@
total[fullOffset(EG_DR) +2] +
total[fullOffset(EG_IR) +2];
LL_total_mw = total[fullOffset(EG_DW) +2];
- commify(LL_total_m, l1, buf1);
- commify(LL_total_mr, l2, buf2);
- commify(LL_total_mw, l3, buf3);
- VG_(message)(Vg_UserMsg, "LL misses: %s (%s rd + %s wr)\n",
- buf1, buf2, buf3);
+ VG_(message)(Vg_UserMsg, "LL misses: %'*llu (%'*llu rd + %'*llu wr)\n",
+ l1, LL_total_m, l2, LL_total_mr, l3, LL_total_mw);
- percentify(LL_total_m * 100 * p /
- (total[fullOffset(EG_IR)] + D_total[0]), p, l1+1, buf1);
- percentify(LL_total_mr * 100 * p /
- (total[fullOffset(EG_IR)] + total[fullOffset(EG_DR)]),
- p, l2+1, buf2);
- percentify(LL_total_mw * 100 * p /
- total[fullOffset(EG_DW)], p, l3+1, buf3);
- VG_(message)(Vg_UserMsg, "LL miss rate: %s (%s + %s )\n",
- buf1, buf2,buf3);
+ VG_(message)(Vg_UserMsg, "LL miss rate: %*.1f%% (%*.1f%% + %*.1f%% )\n",
+ l1, LL_total_m * 100.0 / (total[fullOffset(EG_IR)] + D_total[0]),
+ l2, LL_total_mr * 100.0 / (total[fullOffset(EG_IR)] + total[fullOffset(EG_DR)]),
+ l3, LL_total_mw * 100.0 / total[fullOffset(EG_DW)]);
}