X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FProfiling.c;h=613d30200c9cf3bb2c39a010c782d2ca80fc0c3f;hb=286a25bb4e6c5baf8900874300dc095705d84918;hp=c99de348d2a94295b96f62e7a122d2d7110c8110;hpb=55c8be525c07ee7b4a3d34c23d580580fd825fce;p=ghc-hetmet.git diff --git a/ghc/rts/Profiling.c b/ghc/rts/Profiling.c index c99de34..613d302 100644 --- a/ghc/rts/Profiling.c +++ b/ghc/rts/Profiling.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Profiling.c,v 1.29 2001/12/12 14:31:43 simonmar Exp $ + * $Id: Profiling.c,v 1.34 2002/11/01 11:17:29 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -22,6 +22,8 @@ #include "RetainerProfile.h" #include "LdvProfile.h" +#include + /* * Profiling allocation arena. */ @@ -38,7 +40,8 @@ unsigned int HP_ID; /* figures for the profiling report. */ -static lnat total_alloc, total_prof_ticks; +static ullong total_alloc; +static lnat total_prof_ticks; /* Globals for opening the profiling log file(s) */ @@ -643,7 +646,7 @@ report_per_cc_costs( void ) } } - fprintf(prof_file, "%-20s %-10s", "COST CENTRE", "MODULE"); + fprintf(prof_file, "%-30s %-20s", "COST CENTRE", "MODULE"); fprintf(prof_file, "%6s %6s", "%time", "%alloc"); if (RtsFlags.CcFlags.doCostCentres >= COST_CENTRES_VERBOSE) { fprintf(prof_file, " %5s %9s", "ticks", "bytes"); @@ -654,7 +657,7 @@ report_per_cc_costs( void ) if (cc_to_ignore(cc)) { continue; } - fprintf(prof_file, "%-20s %-10s", cc->label, cc->module); + fprintf(prof_file, "%-30s %-20s", cc->label, cc->module); fprintf(prof_file, "%6.1f %6.1f", total_prof_ticks == 0 ? 0.0 : (cc->time_ticks / (StgFloat) total_prof_ticks * 100), total_alloc == 0 ? 0.0 : (cc->mem_alloc / (StgFloat) @@ -677,10 +680,10 @@ report_per_cc_costs( void ) static void fprint_header( void ) { - fprintf(prof_file, "%-24s %-10s individual inherited\n", "", ""); + fprintf(prof_file, "%-24s %-10s individual inherited\n", "", ""); - fprintf(prof_file, "%-24s %-10s", "COST CENTRE", "MODULE"); - fprintf(prof_file, "%8s %5s %5s %5s %5s", "entries", "%time", "%alloc", "%time", "%alloc"); + fprintf(prof_file, "%-24s %-50s", "COST CENTRE", "MODULE"); + fprintf(prof_file, "%6s %10s %5s %5s %5s %5s", "no.", "entries", "%time", "%alloc", "%time", "%alloc"); if (RtsFlags.CcFlags.doCostCentres >= COST_CENTRES_VERBOSE) { fprintf(prof_file, " %5s %9s", "ticks", "bytes"); @@ -732,9 +735,8 @@ reportCCSProfiling( void ) total_prof_ticks, TICK_MILLISECS); fprintf(prof_file, "\ttotal alloc = %11s bytes", - ullong_format_string((ullong) total_alloc * sizeof(W_), + ullong_format_string(total_alloc * sizeof(W_), temp, rtsTrue/*commas*/)); - /* ToDo: 64-bit error! */ #if defined(PROFILING_DETAIL_COUNTS) fprintf(prof_file, " (%lu closures)", total_allocs); @@ -764,15 +766,15 @@ reportCCS(CostCentreStack *ccs, nat indent) /* force printing of *all* cost centres if -P -P */ { - fprintf(prof_file, "%6d %-*s%-*s %-10s", - ccs->ccsID, indent, "", 24-indent, cc->label, cc->module); + fprintf(prof_file, "%-*s%-*s %-50s", + indent, "", 24-indent, cc->label, cc->module); - fprintf(prof_file, "%8lld %5.1f %5.1f %5.1f %5.1f", - ccs->scc_count, - total_prof_ticks == 0 ? 0.0 : (ccs->time_ticks / (StgFloat) total_prof_ticks * 100), - total_alloc == 0 ? 0.0 : (ccs->mem_alloc / (StgFloat) total_alloc * 100), - total_prof_ticks == 0 ? 0.0 : (ccs->inherited_ticks / (StgFloat) total_prof_ticks * 100), - total_alloc == 0 ? 0.0 : (ccs->inherited_alloc / (StgFloat) total_alloc * 100) + fprintf(prof_file, "%6d %11.0f %5.1f %5.1f %5.1f %5.1f", + ccs->ccsID, (double) ccs->scc_count, + total_prof_ticks == 0 ? 0.0 : ((double)ccs->time_ticks / (double)total_prof_ticks * 100.0), + total_alloc == 0 ? 0.0 : ((double)ccs->mem_alloc / (double)total_alloc * 100.0), + total_prof_ticks == 0 ? 0.0 : ((double)ccs->inherited_ticks / (double)total_prof_ticks * 100.0), + total_alloc == 0 ? 0.0 : ((double)ccs->inherited_alloc / (double)total_alloc * 100.0) ); if (RtsFlags.CcFlags.doCostCentres >= COST_CENTRES_VERBOSE) {