The Trunk: System-bf.488.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: System-bf.488.mcz

commits-2
Bert Freudenberg uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-bf.488.mcz

==================== Summary ====================

Name: System-bf.488
Author: bf
Time: 9 July 2012, 2:55:32.107 pm
UUID: 1f332f03-ee04-4f81-8e73-c2e3b203a85d
Ancestors: System-eem.487

Format floats using print:maxDecimalPlaces: instead of roundTo:.

=============== Diff against System-eem.487 ===============

Item was changed:
  ----- Method: MessageTally>>reportGCStatsOn: (in category 'reporting') -----
  reportGCStatsOn: str
  | oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime rootOverflows |
  upTime := time.
  oldSpaceEnd := gcStats at: 1.
  youngSpaceEnd := gcStats at: 2.
  memoryEnd := gcStats at: 3.
  fullGCs := gcStats at: 7.
  fullGCTime := gcStats at: 8.
  incrGCs := gcStats at: 9.
  incrGCTime := gcStats at: 10.
  tenureCount := gcStats at: 11.
  rootOverflows := gcStats at: 22.
 
  str cr.
  str nextPutAll: '**Memory**'; cr.
  str nextPutAll: ' old ';
  nextPutAll: oldSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
  str nextPutAll: ' young ';
  nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
  str nextPutAll: ' used ';
  nextPutAll: youngSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
  str nextPutAll: ' free ';
  nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
 
  str cr.
  str nextPutAll: '**GCs**'; cr.
  str nextPutAll: ' full ';
+ print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
+ print: (fullGCTime / upTime * 100) maxDecimalPlaces: 2;
- print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
- print: ((fullGCTime / upTime * 100) roundTo: 1.0);
  nextPutAll: '% uptime)'.
  fullGCs = 0 ifFalse:
+ [str nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
- [str nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
  str cr.
+ str nextPutAll: ' incr ';
+ print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
+ print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
- str nextPutAll: ' incr ';
- print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
- print: ((incrGCTime / upTime * 100) roundTo: 1.0);
  nextPutAll: '% uptime)'.
  incrGCs = 0 ifFalse:
+ [str nextPutAll: ', avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
- [str nextPutAll:', avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'].
  str cr.
  str nextPutAll: ' tenures ';
  nextPutAll: tenureCount asStringWithCommas.
  tenureCount = 0 ifFalse:
+ [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
- [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
  str cr.
  str nextPutAll: ' root table ';
+ nextPutAll: rootOverflows asStringWithCommas; nextPutAll: ' overflows'.
- nextPutAll: rootOverflows asStringWithCommas; nextPutAll:' overflows'.
  str cr.
  !

Item was changed:
  ----- Method: SmalltalkImage>>vmStatisticsReportString (in category 'vm statistics') -----
  vmStatisticsReportString
  "StringHolderView open: (StringHolder new contents:
  SmalltalkImage current vmStatisticsReportString) label: 'VM Statistics'"
 
  | params oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2 fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str |
  params := self getVMParameters.
  oldSpaceEnd := params at: 1.
  youngSpaceEnd := params at: 2.
  memoryEnd := params at: 3.
  fullGCs := params at: 7.
  fullGCTime := params at: 8.
  incrGCs := params at: 9.
  incrGCTime := params at: 10.
  tenureCount := params at: 11.
  upTime := Time millisecondClockValue.
 
  str := WriteStream on: (String new: 1000).
  str nextPutAll: 'uptime ';
  print: (upTime / 1000 / 60 // 60); nextPut: $h;
  print: (upTime / 1000 / 60 \\ 60) asInteger; nextPut: $m;
  print: (upTime / 1000 \\ 60) asInteger; nextPut: $s; cr.
 
+ str nextPutAll: 'memory ';
- str nextPutAll: 'memory ';
  nextPutAll: memoryEnd asStringWithCommas; nextPutAll: ' bytes'; cr.
  str nextPutAll: ' old ';
  nextPutAll: oldSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
+ print: (oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
- print: ((oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
  str nextPutAll: ' young ';
  nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
+ print: (youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
- print: ((youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
  str nextPutAll: ' used ';
  nextPutAll: youngSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
+ print: (youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
- print: ((youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
  str nextPutAll: ' free ';
  nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
+ print: (memoryEnd - youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
- print: ((memoryEnd - youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
 
+ str nextPutAll: 'GCs ';
- str nextPutAll: 'GCs ';
  nextPutAll: (fullGCs + incrGCs) asStringWithCommas.
  fullGCs + incrGCs > 0 ifTrue: [
  str
  nextPutAll: ' (';
+ print: (upTime / (fullGCs + incrGCs)) maxDecimalPlaces: 1;
+ nextPutAll: ' ms between GCs)'
- print: ((upTime / (fullGCs + incrGCs)) roundTo: 1);
- nextPutAll: 'ms between GCs)'
  ].
  str cr.
  str nextPutAll: ' full ';
+ nextPutAll: fullGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
+ print: (fullGCTime / upTime * 100) maxDecimalPlaces: 1;
- print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
- print: ((fullGCTime / upTime * 100) roundTo: 1.0);
  nextPutAll: '% uptime)'.
  fullGCs = 0 ifFalse:
+ [str nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
- [str nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
  str cr.
+ str nextPutAll: ' incr ';
+ nextPutAll: incrGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
+ print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
+ nextPutAll: '% uptime), avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
- str nextPutAll: ' incr ';
- print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
- print: ((incrGCTime / upTime * 100) roundTo: 1.0);
- nextPutAll: '% uptime), avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'; cr.
  str nextPutAll: ' tenures ';
  nextPutAll: tenureCount asStringWithCommas.
  tenureCount = 0 ifFalse:
+ [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
- [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
  str cr.
 
  LastStats ifNil: [LastStats := Array new: 6]
  ifNotNil: [
  upTime2 := upTime - (LastStats at: 1).
  fullGCs2 := fullGCs - (LastStats at: 2).
  fullGCTime2 := fullGCTime - (LastStats at: 3).
  incrGCs2 := incrGCs - (LastStats at: 4).
  incrGCTime2 := incrGCTime - (LastStats at: 5).
  tenureCount2 := tenureCount - (LastStats at: 6).
 
  str nextPutAll: self textMarkerForShortReport ;
  nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
  fullGCs2 + incrGCs2 > 0 ifTrue: [
  str
  nextPutAll: ' (';
+ print: upTime2 // (fullGCs2 + incrGCs2);
+ nextPutAll: ' ms between GCs)'.
- print: ((upTime2 / (fullGCs2 + incrGCs2)) roundTo: 1);
- nextPutAll: 'ms between GCs)'.
  ].
  str cr.
+ str nextPutAll: ' uptime '; print: (upTime2 / 1000.0) maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
- str nextPutAll: ' uptime '; print: ((upTime2 / 1000.0) roundTo: 0.1); nextPutAll: 's'; cr.
  str nextPutAll: ' full ';
+ nextPutAll: fullGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: ' ms (';
+ print: (fullGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
- print: fullGCs2; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: 'ms (';
- print: ((fullGCTime2 / upTime2 * 100) roundTo: 1.0);
  nextPutAll: '% uptime)'.
  fullGCs2 = 0 ifFalse:
+ [str nextPutAll: ', avg '; print: (fullGCTime2 / fullGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'].
- [str nextPutAll: ', avg '; print: ((fullGCTime2 / fullGCs2) roundTo: 1.0); nextPutAll: 'ms'].
  str cr.
+ str nextPutAll: ' incr ';
+ nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: ' ms (';
+ print: (incrGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
- str nextPutAll: ' incr ';
- print: incrGCs2; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: 'ms (';
- print: ((incrGCTime2 / upTime2 * 100) roundTo: 1.0);
  nextPutAll: '% uptime), avg '.
  incrGCs2 > 0 ifTrue: [
+ str print: (incrGCTime2 / incrGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'
- str print: ((incrGCTime2 / incrGCs2) roundTo: 1.0); nextPutAll: 'ms'
  ].
  str cr.
  str nextPutAll: ' tenures ';
  nextPutAll: tenureCount2 asStringWithCommas.
  tenureCount2 = 0 ifFalse:
+ [str nextPutAll: ' (avg '; print: incrGCs2 // tenureCount2; nextPutAll: ' GCs/tenure)'].
- [str nextPutAll: ' (avg '; print: (incrGCs2 / tenureCount2) asInteger; nextPutAll: ' GCs/tenure)'].
  str cr.
  ].
  LastStats at: 1 put: upTime.
  LastStats at: 2 put: fullGCs.
  LastStats at: 3 put: fullGCTime.
  LastStats at: 4 put: incrGCs.
  LastStats at: 5 put: incrGCTime.
  LastStats at: 6 put: tenureCount.
 
  ^ str contents
  !


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-bf.488.mcz

Chris Muller-3
Beat me to it but you forgot to update the sends to
#asStringWithCommasSigned.  It was deprecated because this is the only
sender and it's an exceptional case to want to print "+" in front.  We
should use #asStringWithCommasSigned: true.

On Mon, Jul 9, 2012 at 7:55 AM,  <[hidden email]> wrote:

> Bert Freudenberg uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-bf.488.mcz
>
> ==================== Summary ====================
>
> Name: System-bf.488
> Author: bf
> Time: 9 July 2012, 2:55:32.107 pm
> UUID: 1f332f03-ee04-4f81-8e73-c2e3b203a85d
> Ancestors: System-eem.487
>
> Format floats using print:maxDecimalPlaces: instead of roundTo:.
>
> =============== Diff against System-eem.487 ===============
>
> Item was changed:
>   ----- Method: MessageTally>>reportGCStatsOn: (in category 'reporting') -----
>   reportGCStatsOn: str
>         | oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime rootOverflows |
>         upTime := time.
>         oldSpaceEnd                     := gcStats at: 1.
>         youngSpaceEnd           := gcStats at: 2.
>         memoryEnd                       := gcStats at: 3.
>         fullGCs                         := gcStats at: 7.
>         fullGCTime                      := gcStats at: 8.
>         incrGCs                         := gcStats at: 9.
>         incrGCTime                      := gcStats at: 10.
>         tenureCount                     := gcStats at: 11.
>         rootOverflows           := gcStats at: 22.
>
>         str cr.
>         str     nextPutAll: '**Memory**'; cr.
>         str     nextPutAll:     '       old                     ';
>                 nextPutAll: oldSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>         str     nextPutAll: '   young           ';
>                 nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>         str     nextPutAll: '   used            ';
>                 nextPutAll: youngSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>         str     nextPutAll: '   free            ';
>                 nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>
>         str cr.
>         str     nextPutAll: '**GCs**'; cr.
>         str     nextPutAll: '   full                    ';
> +               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
> +               print: (fullGCTime / upTime * 100) maxDecimalPlaces: 2;
> -               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
> -               print: ((fullGCTime / upTime * 100) roundTo: 1.0);
>                 nextPutAll: '% uptime)'.
>         fullGCs = 0 ifFalse:
> +               [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
> -               [str    nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
>         str     cr.
> +       str     nextPutAll: '   incr                    ';
> +               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
> +               print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
> -       str     nextPutAll: '   incr            ';
> -               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
> -               print: ((incrGCTime / upTime * 100) roundTo: 1.0);
>                 nextPutAll: '% uptime)'.
>         incrGCs = 0 ifFalse:
> +               [str nextPutAll: ', avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
> -               [str nextPutAll:', avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'].
>         str cr.
>         str     nextPutAll: '   tenures         ';
>                 nextPutAll: tenureCount asStringWithCommas.
>         tenureCount = 0 ifFalse:
> +               [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
> -               [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
>         str     cr.
>         str     nextPutAll: '   root table      ';
> +               nextPutAll: rootOverflows asStringWithCommas; nextPutAll: ' overflows'.
> -               nextPutAll: rootOverflows asStringWithCommas; nextPutAll:' overflows'.
>         str cr.
>   !
>
> Item was changed:
>   ----- Method: SmalltalkImage>>vmStatisticsReportString (in category 'vm statistics') -----
>   vmStatisticsReportString
>         "StringHolderView open: (StringHolder new contents:
>                 SmalltalkImage current vmStatisticsReportString) label: 'VM Statistics'"
>
>         | params oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2 fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str |
>         params := self getVMParameters.
>         oldSpaceEnd                     := params at: 1.
>         youngSpaceEnd           := params at: 2.
>         memoryEnd                       := params at: 3.
>         fullGCs                         := params at: 7.
>         fullGCTime                      := params at: 8.
>         incrGCs                         := params at: 9.
>         incrGCTime                      := params at: 10.
>         tenureCount                     := params at: 11.
>         upTime := Time millisecondClockValue.
>
>         str := WriteStream on: (String new: 1000).
>         str     nextPutAll: 'uptime                     ';
>                 print: (upTime / 1000 / 60 // 60); nextPut: $h;
>                 print: (upTime / 1000 / 60 \\ 60) asInteger; nextPut: $m;
>                 print: (upTime / 1000 \\ 60) asInteger; nextPut: $s; cr.
>
> +       str     nextPutAll: 'memory             ';
> -       str     nextPutAll: 'memory                     ';
>                 nextPutAll: memoryEnd asStringWithCommas; nextPutAll: ' bytes'; cr.
>         str     nextPutAll:     '       old                     ';
>                 nextPutAll: oldSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
> +               print: (oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
> -               print: ((oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>         str     nextPutAll: '   young           ';
>                 nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
> +               print: (youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
> -               print: ((youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>         str     nextPutAll: '   used            ';
>                 nextPutAll: youngSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
> +               print: (youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
> -               print: ((youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>         str     nextPutAll: '   free            ';
>                 nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
> +               print: (memoryEnd - youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
> -               print: ((memoryEnd - youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>
> +       str     nextPutAll: 'GCs                        ';
> -       str     nextPutAll: 'GCs                                ';
>                 nextPutAll: (fullGCs + incrGCs) asStringWithCommas.
>         fullGCs + incrGCs > 0 ifTrue: [
>                 str
>                         nextPutAll: ' (';
> +                       print: (upTime / (fullGCs + incrGCs)) maxDecimalPlaces: 1;
> +                       nextPutAll: ' ms between GCs)'
> -                       print: ((upTime / (fullGCs + incrGCs)) roundTo: 1);
> -                       nextPutAll: 'ms between GCs)'
>         ].
>         str cr.
>         str     nextPutAll: '   full                    ';
> +               nextPutAll: fullGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
> +               print: (fullGCTime / upTime * 100) maxDecimalPlaces: 1;
> -               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
> -               print: ((fullGCTime / upTime * 100) roundTo: 1.0);
>                 nextPutAll: '% uptime)'.
>         fullGCs = 0 ifFalse:
> +               [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
> -               [str    nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
>         str     cr.
> +       str     nextPutAll: '   incr                    ';
> +               nextPutAll: incrGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
> +               print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
> +               nextPutAll: '% uptime), avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
> -       str     nextPutAll: '   incr            ';
> -               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
> -               print: ((incrGCTime / upTime * 100) roundTo: 1.0);
> -               nextPutAll: '% uptime), avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'; cr.
>         str     nextPutAll: '   tenures         ';
>                 nextPutAll: tenureCount asStringWithCommas.
>         tenureCount = 0 ifFalse:
> +               [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
> -               [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
>         str     cr.
>
>   LastStats ifNil: [LastStats := Array new: 6]
>   ifNotNil: [
>         upTime2 := upTime - (LastStats at: 1).
>         fullGCs2 := fullGCs - (LastStats at: 2).
>         fullGCTime2 := fullGCTime - (LastStats at: 3).
>         incrGCs2 := incrGCs - (LastStats at: 4).
>         incrGCTime2 := incrGCTime - (LastStats at: 5).
>         tenureCount2 := tenureCount - (LastStats at: 6).
>
>         str     nextPutAll: self textMarkerForShortReport ;
>                 nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
>         fullGCs2 + incrGCs2 > 0 ifTrue: [
>                 str
>                         nextPutAll: ' (';
> +                       print: upTime2 // (fullGCs2 + incrGCs2);
> +                       nextPutAll: ' ms between GCs)'.
> -                       print: ((upTime2 / (fullGCs2 + incrGCs2)) roundTo: 1);
> -                       nextPutAll: 'ms between GCs)'.
>         ].
>         str cr.
> +       str     nextPutAll: '   uptime          '; print: (upTime2 / 1000.0) maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
> -       str     nextPutAll: '   uptime          '; print: ((upTime2 / 1000.0) roundTo: 0.1); nextPutAll: 's'; cr.
>         str     nextPutAll: '   full                    ';
> +               nextPutAll: fullGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: ' ms (';
> +               print: (fullGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
> -               print: fullGCs2; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: 'ms (';
> -               print: ((fullGCTime2 / upTime2 * 100) roundTo: 1.0);
>                 nextPutAll: '% uptime)'.
>         fullGCs2 = 0 ifFalse:
> +               [str    nextPutAll: ', avg '; print: (fullGCTime2 / fullGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'].
> -               [str    nextPutAll: ', avg '; print: ((fullGCTime2 / fullGCs2) roundTo: 1.0); nextPutAll: 'ms'].
>         str     cr.
> +       str     nextPutAll: '   incr                    ';
> +               nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: ' ms (';
> +               print: (incrGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
> -       str     nextPutAll: '   incr            ';
> -               print: incrGCs2; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: 'ms (';
> -               print: ((incrGCTime2 / upTime2 * 100) roundTo: 1.0);
>                 nextPutAll: '% uptime), avg '.
>         incrGCs2 > 0 ifTrue: [
> +                str print: (incrGCTime2 / incrGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'
> -                str print: ((incrGCTime2 / incrGCs2) roundTo: 1.0); nextPutAll: 'ms'
>         ].
>         str cr.
>         str     nextPutAll: '   tenures         ';
>                 nextPutAll: tenureCount2 asStringWithCommas.
>         tenureCount2 = 0 ifFalse:
> +               [str nextPutAll: ' (avg '; print: incrGCs2 // tenureCount2; nextPutAll: ' GCs/tenure)'].
> -               [str nextPutAll: ' (avg '; print: (incrGCs2 / tenureCount2) asInteger; nextPutAll: ' GCs/tenure)'].
>         str     cr.
>   ].
>         LastStats at: 1 put: upTime.
>         LastStats at: 2 put: fullGCs.
>         LastStats at: 3 put: fullGCTime.
>         LastStats at: 4 put: incrGCs.
>         LastStats at: 5 put: incrGCTime.
>         LastStats at: 6 put: tenureCount.
>
>         ^ str contents
>   !
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-bf.488.mcz

Bert Freudenberg
On 2012-07-09, at 17:57, Chris Muller wrote:

> Beat me to it but you forgot to update the sends to
> #asStringWithCommasSigned.  It was deprecated because this is the only
> sender and it's an exceptional case to want to print "+" in front.  We
> should use #asStringWithCommasSigned: true.

Feel free to improve :)

Another idea would be to tweak roundTo: so the result would print as expected. Any floating point magician out there? ;)

- Bert -

> On Mon, Jul 9, 2012 at 7:55 AM,  <[hidden email]> wrote:
>> Bert Freudenberg uploaded a new version of System to project The Trunk:
>> http://source.squeak.org/trunk/System-bf.488.mcz
>>
>> ==================== Summary ====================
>>
>> Name: System-bf.488
>> Author: bf
>> Time: 9 July 2012, 2:55:32.107 pm
>> UUID: 1f332f03-ee04-4f81-8e73-c2e3b203a85d
>> Ancestors: System-eem.487
>>
>> Format floats using print:maxDecimalPlaces: instead of roundTo:.
>>
>> =============== Diff against System-eem.487 ===============
>>
>> Item was changed:
>>  ----- Method: MessageTally>>reportGCStatsOn: (in category 'reporting') -----
>>  reportGCStatsOn: str
>>        | oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime rootOverflows |
>>        upTime := time.
>>        oldSpaceEnd                     := gcStats at: 1.
>>        youngSpaceEnd           := gcStats at: 2.
>>        memoryEnd                       := gcStats at: 3.
>>        fullGCs                         := gcStats at: 7.
>>        fullGCTime                      := gcStats at: 8.
>>        incrGCs                         := gcStats at: 9.
>>        incrGCTime                      := gcStats at: 10.
>>        tenureCount                     := gcStats at: 11.
>>        rootOverflows           := gcStats at: 22.
>>
>>        str cr.
>>        str     nextPutAll: '**Memory**'; cr.
>>        str     nextPutAll:     '       old                     ';
>>                nextPutAll: oldSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>        str     nextPutAll: '   young           ';
>>                nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>        str     nextPutAll: '   used            ';
>>                nextPutAll: youngSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>        str     nextPutAll: '   free            ';
>>                nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>
>>        str cr.
>>        str     nextPutAll: '**GCs**'; cr.
>>        str     nextPutAll: '   full                    ';
>> +               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
>> +               print: (fullGCTime / upTime * 100) maxDecimalPlaces: 2;
>> -               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
>> -               print: ((fullGCTime / upTime * 100) roundTo: 1.0);
>>                nextPutAll: '% uptime)'.
>>        fullGCs = 0 ifFalse:
>> +               [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>> -               [str    nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
>>        str     cr.
>> +       str     nextPutAll: '   incr                    ';
>> +               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
>> +               print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
>> -       str     nextPutAll: '   incr            ';
>> -               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
>> -               print: ((incrGCTime / upTime * 100) roundTo: 1.0);
>>                nextPutAll: '% uptime)'.
>>        incrGCs = 0 ifFalse:
>> +               [str nextPutAll: ', avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>> -               [str nextPutAll:', avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'].
>>        str cr.
>>        str     nextPutAll: '   tenures         ';
>>                nextPutAll: tenureCount asStringWithCommas.
>>        tenureCount = 0 ifFalse:
>> +               [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
>> -               [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
>>        str     cr.
>>        str     nextPutAll: '   root table      ';
>> +               nextPutAll: rootOverflows asStringWithCommas; nextPutAll: ' overflows'.
>> -               nextPutAll: rootOverflows asStringWithCommas; nextPutAll:' overflows'.
>>        str cr.
>>  !
>>
>> Item was changed:
>>  ----- Method: SmalltalkImage>>vmStatisticsReportString (in category 'vm statistics') -----
>>  vmStatisticsReportString
>>        "StringHolderView open: (StringHolder new contents:
>>                SmalltalkImage current vmStatisticsReportString) label: 'VM Statistics'"
>>
>>        | params oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2 fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str |
>>        params := self getVMParameters.
>>        oldSpaceEnd                     := params at: 1.
>>        youngSpaceEnd           := params at: 2.
>>        memoryEnd                       := params at: 3.
>>        fullGCs                         := params at: 7.
>>        fullGCTime                      := params at: 8.
>>        incrGCs                         := params at: 9.
>>        incrGCTime                      := params at: 10.
>>        tenureCount                     := params at: 11.
>>        upTime := Time millisecondClockValue.
>>
>>        str := WriteStream on: (String new: 1000).
>>        str     nextPutAll: 'uptime                     ';
>>                print: (upTime / 1000 / 60 // 60); nextPut: $h;
>>                print: (upTime / 1000 / 60 \\ 60) asInteger; nextPut: $m;
>>                print: (upTime / 1000 \\ 60) asInteger; nextPut: $s; cr.
>>
>> +       str     nextPutAll: 'memory             ';
>> -       str     nextPutAll: 'memory                     ';
>>                nextPutAll: memoryEnd asStringWithCommas; nextPutAll: ' bytes'; cr.
>>        str     nextPutAll:     '       old                     ';
>>                nextPutAll: oldSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
>> +               print: (oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>> -               print: ((oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>        str     nextPutAll: '   young           ';
>>                nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
>> +               print: (youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>> -               print: ((youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>        str     nextPutAll: '   used            ';
>>                nextPutAll: youngSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
>> +               print: (youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>> -               print: ((youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>        str     nextPutAll: '   free            ';
>>                nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
>> +               print: (memoryEnd - youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>> -               print: ((memoryEnd - youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>
>> +       str     nextPutAll: 'GCs                        ';
>> -       str     nextPutAll: 'GCs                                ';
>>                nextPutAll: (fullGCs + incrGCs) asStringWithCommas.
>>        fullGCs + incrGCs > 0 ifTrue: [
>>                str
>>                        nextPutAll: ' (';
>> +                       print: (upTime / (fullGCs + incrGCs)) maxDecimalPlaces: 1;
>> +                       nextPutAll: ' ms between GCs)'
>> -                       print: ((upTime / (fullGCs + incrGCs)) roundTo: 1);
>> -                       nextPutAll: 'ms between GCs)'
>>        ].
>>        str cr.
>>        str     nextPutAll: '   full                    ';
>> +               nextPutAll: fullGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
>> +               print: (fullGCTime / upTime * 100) maxDecimalPlaces: 1;
>> -               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
>> -               print: ((fullGCTime / upTime * 100) roundTo: 1.0);
>>                nextPutAll: '% uptime)'.
>>        fullGCs = 0 ifFalse:
>> +               [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>> -               [str    nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
>>        str     cr.
>> +       str     nextPutAll: '   incr                    ';
>> +               nextPutAll: incrGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
>> +               print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
>> +               nextPutAll: '% uptime), avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
>> -       str     nextPutAll: '   incr            ';
>> -               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
>> -               print: ((incrGCTime / upTime * 100) roundTo: 1.0);
>> -               nextPutAll: '% uptime), avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'; cr.
>>        str     nextPutAll: '   tenures         ';
>>                nextPutAll: tenureCount asStringWithCommas.
>>        tenureCount = 0 ifFalse:
>> +               [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
>> -               [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
>>        str     cr.
>>
>>  LastStats ifNil: [LastStats := Array new: 6]
>>  ifNotNil: [
>>        upTime2 := upTime - (LastStats at: 1).
>>        fullGCs2 := fullGCs - (LastStats at: 2).
>>        fullGCTime2 := fullGCTime - (LastStats at: 3).
>>        incrGCs2 := incrGCs - (LastStats at: 4).
>>        incrGCTime2 := incrGCTime - (LastStats at: 5).
>>        tenureCount2 := tenureCount - (LastStats at: 6).
>>
>>        str     nextPutAll: self textMarkerForShortReport ;
>>                nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
>>        fullGCs2 + incrGCs2 > 0 ifTrue: [
>>                str
>>                        nextPutAll: ' (';
>> +                       print: upTime2 // (fullGCs2 + incrGCs2);
>> +                       nextPutAll: ' ms between GCs)'.
>> -                       print: ((upTime2 / (fullGCs2 + incrGCs2)) roundTo: 1);
>> -                       nextPutAll: 'ms between GCs)'.
>>        ].
>>        str cr.
>> +       str     nextPutAll: '   uptime          '; print: (upTime2 / 1000.0) maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
>> -       str     nextPutAll: '   uptime          '; print: ((upTime2 / 1000.0) roundTo: 0.1); nextPutAll: 's'; cr.
>>        str     nextPutAll: '   full                    ';
>> +               nextPutAll: fullGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: ' ms (';
>> +               print: (fullGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
>> -               print: fullGCs2; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: 'ms (';
>> -               print: ((fullGCTime2 / upTime2 * 100) roundTo: 1.0);
>>                nextPutAll: '% uptime)'.
>>        fullGCs2 = 0 ifFalse:
>> +               [str    nextPutAll: ', avg '; print: (fullGCTime2 / fullGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>> -               [str    nextPutAll: ', avg '; print: ((fullGCTime2 / fullGCs2) roundTo: 1.0); nextPutAll: 'ms'].
>>        str     cr.
>> +       str     nextPutAll: '   incr                    ';
>> +               nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: ' ms (';
>> +               print: (incrGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
>> -       str     nextPutAll: '   incr            ';
>> -               print: incrGCs2; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: 'ms (';
>> -               print: ((incrGCTime2 / upTime2 * 100) roundTo: 1.0);
>>                nextPutAll: '% uptime), avg '.
>>        incrGCs2 > 0 ifTrue: [
>> +                str print: (incrGCTime2 / incrGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'
>> -                str print: ((incrGCTime2 / incrGCs2) roundTo: 1.0); nextPutAll: 'ms'
>>        ].
>>        str cr.
>>        str     nextPutAll: '   tenures         ';
>>                nextPutAll: tenureCount2 asStringWithCommas.
>>        tenureCount2 = 0 ifFalse:
>> +               [str nextPutAll: ' (avg '; print: incrGCs2 // tenureCount2; nextPutAll: ' GCs/tenure)'].
>> -               [str nextPutAll: ' (avg '; print: (incrGCs2 / tenureCount2) asInteger; nextPutAll: ' GCs/tenure)'].
>>        str     cr.
>>  ].
>>        LastStats at: 1 put: upTime.
>>        LastStats at: 2 put: fullGCs.
>>        LastStats at: 3 put: fullGCTime.
>>        LastStats at: 4 put: incrGCs.
>>        LastStats at: 5 put: incrGCTime.
>>        LastStats at: 6 put: tenureCount.
>>
>>        ^ str contents
>>  !
>>
>>
>




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-bf.488.mcz

Nicolas Cellier
2012/7/9 Bert Freudenberg <[hidden email]>:

> On 2012-07-09, at 17:57, Chris Muller wrote:
>
>> Beat me to it but you forgot to update the sends to
>> #asStringWithCommasSigned.  It was deprecated because this is the only
>> sender and it's an exceptional case to want to print "+" in front.  We
>> should use #asStringWithCommasSigned: true.
>
> Feel free to improve :)
>
> Another idea would be to tweak roundTo: so the result would print as expected. Any floating point magician out there? ;)
>
> - Bert -

This would be something like:

roundToDecimalPlaces: d
    ^(self asTrueFraction roundTo: (1/10 raisedTo: d)) asFloat

slightly different from Pharo initial proposition
http://code.google.com/p/pharo/issues/detail?id=5590
round: d
    ^((self * (10 raisedTo: d)) rounded / (10 raisedTo: d)) asFloat

For example, with receiver 0.995, we have 0.995 < (995/1000) so the former is

    (0.995 roundToDecimalPlaces: d) -> 0.99

while the later is

    (0.995 round: 2) -> 1.0

REMINDER: I started http://ss3.gemstone.com/ss/NumberPrinter to factor
a few Float printing methods
However, my initial solution is not very flexible because it relies
too much on inheritance.
It's already a progress compared to explosion of duplications in current trunk.

Nicolas

>
>> On Mon, Jul 9, 2012 at 7:55 AM,  <[hidden email]> wrote:
>>> Bert Freudenberg uploaded a new version of System to project The Trunk:
>>> http://source.squeak.org/trunk/System-bf.488.mcz
>>>
>>> ==================== Summary ====================
>>>
>>> Name: System-bf.488
>>> Author: bf
>>> Time: 9 July 2012, 2:55:32.107 pm
>>> UUID: 1f332f03-ee04-4f81-8e73-c2e3b203a85d
>>> Ancestors: System-eem.487
>>>
>>> Format floats using print:maxDecimalPlaces: instead of roundTo:.
>>>
>>> =============== Diff against System-eem.487 ===============
>>>
>>> Item was changed:
>>>  ----- Method: MessageTally>>reportGCStatsOn: (in category 'reporting') -----
>>>  reportGCStatsOn: str
>>>        | oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime rootOverflows |
>>>        upTime := time.
>>>        oldSpaceEnd                     := gcStats at: 1.
>>>        youngSpaceEnd           := gcStats at: 2.
>>>        memoryEnd                       := gcStats at: 3.
>>>        fullGCs                         := gcStats at: 7.
>>>        fullGCTime                      := gcStats at: 8.
>>>        incrGCs                         := gcStats at: 9.
>>>        incrGCTime                      := gcStats at: 10.
>>>        tenureCount                     := gcStats at: 11.
>>>        rootOverflows           := gcStats at: 22.
>>>
>>>        str cr.
>>>        str     nextPutAll: '**Memory**'; cr.
>>>        str     nextPutAll:     '       old                     ';
>>>                nextPutAll: oldSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>>        str     nextPutAll: '   young           ';
>>>                nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>>        str     nextPutAll: '   used            ';
>>>                nextPutAll: youngSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>>        str     nextPutAll: '   free            ';
>>>                nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr.
>>>
>>>        str cr.
>>>        str     nextPutAll: '**GCs**'; cr.
>>>        str     nextPutAll: '   full                    ';
>>> +               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
>>> +               print: (fullGCTime / upTime * 100) maxDecimalPlaces: 2;
>>> -               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
>>> -               print: ((fullGCTime / upTime * 100) roundTo: 1.0);
>>>                nextPutAll: '% uptime)'.
>>>        fullGCs = 0 ifFalse:
>>> +               [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>>> -               [str    nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
>>>        str     cr.
>>> +       str     nextPutAll: '   incr                    ';
>>> +               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
>>> +               print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
>>> -       str     nextPutAll: '   incr            ';
>>> -               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
>>> -               print: ((incrGCTime / upTime * 100) roundTo: 1.0);
>>>                nextPutAll: '% uptime)'.
>>>        incrGCs = 0 ifFalse:
>>> +               [str nextPutAll: ', avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>>> -               [str nextPutAll:', avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'].
>>>        str cr.
>>>        str     nextPutAll: '   tenures         ';
>>>                nextPutAll: tenureCount asStringWithCommas.
>>>        tenureCount = 0 ifFalse:
>>> +               [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
>>> -               [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
>>>        str     cr.
>>>        str     nextPutAll: '   root table      ';
>>> +               nextPutAll: rootOverflows asStringWithCommas; nextPutAll: ' overflows'.
>>> -               nextPutAll: rootOverflows asStringWithCommas; nextPutAll:' overflows'.
>>>        str cr.
>>>  !
>>>
>>> Item was changed:
>>>  ----- Method: SmalltalkImage>>vmStatisticsReportString (in category 'vm statistics') -----
>>>  vmStatisticsReportString
>>>        "StringHolderView open: (StringHolder new contents:
>>>                SmalltalkImage current vmStatisticsReportString) label: 'VM Statistics'"
>>>
>>>        | params oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2 fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str |
>>>        params := self getVMParameters.
>>>        oldSpaceEnd                     := params at: 1.
>>>        youngSpaceEnd           := params at: 2.
>>>        memoryEnd                       := params at: 3.
>>>        fullGCs                         := params at: 7.
>>>        fullGCTime                      := params at: 8.
>>>        incrGCs                         := params at: 9.
>>>        incrGCTime                      := params at: 10.
>>>        tenureCount                     := params at: 11.
>>>        upTime := Time millisecondClockValue.
>>>
>>>        str := WriteStream on: (String new: 1000).
>>>        str     nextPutAll: 'uptime                     ';
>>>                print: (upTime / 1000 / 60 // 60); nextPut: $h;
>>>                print: (upTime / 1000 / 60 \\ 60) asInteger; nextPut: $m;
>>>                print: (upTime / 1000 \\ 60) asInteger; nextPut: $s; cr.
>>>
>>> +       str     nextPutAll: 'memory             ';
>>> -       str     nextPutAll: 'memory                     ';
>>>                nextPutAll: memoryEnd asStringWithCommas; nextPutAll: ' bytes'; cr.
>>>        str     nextPutAll:     '       old                     ';
>>>                nextPutAll: oldSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
>>> +               print: (oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>>> -               print: ((oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>>        str     nextPutAll: '   young           ';
>>>                nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
>>> +               print: (youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>>> -               print: ((youngSpaceEnd - oldSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>>        str     nextPutAll: '   used            ';
>>>                nextPutAll: youngSpaceEnd asStringWithCommas; nextPutAll: ' bytes (';
>>> +               print: (youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>>> -               print: ((youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>>        str     nextPutAll: '   free            ';
>>>                nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
>>> +               print: (memoryEnd - youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>>> -               print: ((memoryEnd - youngSpaceEnd / memoryEnd * 100) roundTo: 0.1); nextPutAll: '%)'; cr.
>>>
>>> +       str     nextPutAll: 'GCs                        ';
>>> -       str     nextPutAll: 'GCs                                ';
>>>                nextPutAll: (fullGCs + incrGCs) asStringWithCommas.
>>>        fullGCs + incrGCs > 0 ifTrue: [
>>>                str
>>>                        nextPutAll: ' (';
>>> +                       print: (upTime / (fullGCs + incrGCs)) maxDecimalPlaces: 1;
>>> +                       nextPutAll: ' ms between GCs)'
>>> -                       print: ((upTime / (fullGCs + incrGCs)) roundTo: 1);
>>> -                       nextPutAll: 'ms between GCs)'
>>>        ].
>>>        str cr.
>>>        str     nextPutAll: '   full                    ';
>>> +               nextPutAll: fullGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
>>> +               print: (fullGCTime / upTime * 100) maxDecimalPlaces: 1;
>>> -               print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms (';
>>> -               print: ((fullGCTime / upTime * 100) roundTo: 1.0);
>>>                nextPutAll: '% uptime)'.
>>>        fullGCs = 0 ifFalse:
>>> +               [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>>> -               [str    nextPutAll: ', avg '; print: ((fullGCTime / fullGCs) roundTo: 1.0); nextPutAll: 'ms'].
>>>        str     cr.
>>> +       str     nextPutAll: '   incr                    ';
>>> +               nextPutAll: incrGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
>>> +               print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
>>> +               nextPutAll: '% uptime), avg '; print: (incrGCTime / incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
>>> -       str     nextPutAll: '   incr            ';
>>> -               print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms (';
>>> -               print: ((incrGCTime / upTime * 100) roundTo: 1.0);
>>> -               nextPutAll: '% uptime), avg '; print: ((incrGCTime / incrGCs) roundTo: 1.0); nextPutAll: 'ms'; cr.
>>>        str     nextPutAll: '   tenures         ';
>>>                nextPutAll: tenureCount asStringWithCommas.
>>>        tenureCount = 0 ifFalse:
>>> +               [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)'].
>>> -               [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)'].
>>>        str     cr.
>>>
>>>  LastStats ifNil: [LastStats := Array new: 6]
>>>  ifNotNil: [
>>>        upTime2 := upTime - (LastStats at: 1).
>>>        fullGCs2 := fullGCs - (LastStats at: 2).
>>>        fullGCTime2 := fullGCTime - (LastStats at: 3).
>>>        incrGCs2 := incrGCs - (LastStats at: 4).
>>>        incrGCTime2 := incrGCTime - (LastStats at: 5).
>>>        tenureCount2 := tenureCount - (LastStats at: 6).
>>>
>>>        str     nextPutAll: self textMarkerForShortReport ;
>>>                nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
>>>        fullGCs2 + incrGCs2 > 0 ifTrue: [
>>>                str
>>>                        nextPutAll: ' (';
>>> +                       print: upTime2 // (fullGCs2 + incrGCs2);
>>> +                       nextPutAll: ' ms between GCs)'.
>>> -                       print: ((upTime2 / (fullGCs2 + incrGCs2)) roundTo: 1);
>>> -                       nextPutAll: 'ms between GCs)'.
>>>        ].
>>>        str cr.
>>> +       str     nextPutAll: '   uptime          '; print: (upTime2 / 1000.0) maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
>>> -       str     nextPutAll: '   uptime          '; print: ((upTime2 / 1000.0) roundTo: 0.1); nextPutAll: 's'; cr.
>>>        str     nextPutAll: '   full                    ';
>>> +               nextPutAll: fullGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: ' ms (';
>>> +               print: (fullGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
>>> -               print: fullGCs2; nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: 'ms (';
>>> -               print: ((fullGCTime2 / upTime2 * 100) roundTo: 1.0);
>>>                nextPutAll: '% uptime)'.
>>>        fullGCs2 = 0 ifFalse:
>>> +               [str    nextPutAll: ', avg '; print: (fullGCTime2 / fullGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'].
>>> -               [str    nextPutAll: ', avg '; print: ((fullGCTime2 / fullGCs2) roundTo: 1.0); nextPutAll: 'ms'].
>>>        str     cr.
>>> +       str     nextPutAll: '   incr                    ';
>>> +               nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: ' ms (';
>>> +               print: (incrGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
>>> -       str     nextPutAll: '   incr            ';
>>> -               print: incrGCs2; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: 'ms (';
>>> -               print: ((incrGCTime2 / upTime2 * 100) roundTo: 1.0);
>>>                nextPutAll: '% uptime), avg '.
>>>        incrGCs2 > 0 ifTrue: [
>>> +                str print: (incrGCTime2 / incrGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'
>>> -                str print: ((incrGCTime2 / incrGCs2) roundTo: 1.0); nextPutAll: 'ms'
>>>        ].
>>>        str cr.
>>>        str     nextPutAll: '   tenures         ';
>>>                nextPutAll: tenureCount2 asStringWithCommas.
>>>        tenureCount2 = 0 ifFalse:
>>> +               [str nextPutAll: ' (avg '; print: incrGCs2 // tenureCount2; nextPutAll: ' GCs/tenure)'].
>>> -               [str nextPutAll: ' (avg '; print: (incrGCs2 / tenureCount2) asInteger; nextPutAll: ' GCs/tenure)'].
>>>        str     cr.
>>>  ].
>>>        LastStats at: 1 put: upTime.
>>>        LastStats at: 2 put: fullGCs.
>>>        LastStats at: 3 put: fullGCTime.
>>>        LastStats at: 4 put: incrGCs.
>>>        LastStats at: 5 put: incrGCTime.
>>>        LastStats at: 6 put: tenureCount.
>>>
>>>        ^ str contents
>>>  !
>>>
>>>
>>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-bf.488.mcz

Bert Freudenberg

On 2012-07-09, at 22:18, Nicolas Cellier wrote:

> 2012/7/9 Bert Freudenberg <[hidden email]>:
>> On 2012-07-09, at 17:57, Chris Muller wrote:
>>
>>> Beat me to it but you forgot to update the sends to
>>> #asStringWithCommasSigned.  It was deprecated because this is the only
>>> sender and it's an exceptional case to want to print "+" in front.  We
>>> should use #asStringWithCommasSigned: true.
>>
>> Feel free to improve :)
>>
>> Another idea would be to tweak roundTo: so the result would print as expected. Any floating point magician out there? ;)
>>
>> - Bert -
>
> This would be something like:
>
> roundToDecimalPlaces: d
>    ^(self asTrueFraction roundTo: (1/10 raisedTo: d)) asFloat
>
> slightly different from Pharo initial proposition
> http://code.google.com/p/pharo/issues/detail?id=5590
> round: d
>    ^((self * (10 raisedTo: d)) rounded / (10 raisedTo: d)) asFloat
>
> For example, with receiver 0.995, we have 0.995 < (995/1000) so the former is
>
>    (0.995 roundToDecimalPlaces: d) -> 0.99
>
> while the later is
>
>    (0.995 round: 2) -> 1.0

Ah, I remember that discussion now. That Pharo version is 10x more efficient than the one using asTrueFraction, though. I'd be happy with that I guess.

> REMINDER: I started http://ss3.gemstone.com/ss/NumberPrinter to factor
> a few Float printing methods
> However, my initial solution is not very flexible because it relies
> too much on inheritance.
> It's already a progress compared to explosion of duplications in current trunk.
>
> Nicolas

Feature request: allow to print with thousands grouping, i.e. a space between every 3 digits :)

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-bf.488.mcz

Nicolas Cellier
2012/7/9 Bert Freudenberg <[hidden email]>:

>
> On 2012-07-09, at 22:18, Nicolas Cellier wrote:
>
>> 2012/7/9 Bert Freudenberg <[hidden email]>:
>>> On 2012-07-09, at 17:57, Chris Muller wrote:
>>>
>>>> Beat me to it but you forgot to update the sends to
>>>> #asStringWithCommasSigned.  It was deprecated because this is the only
>>>> sender and it's an exceptional case to want to print "+" in front.  We
>>>> should use #asStringWithCommasSigned: true.
>>>
>>> Feel free to improve :)
>>>
>>> Another idea would be to tweak roundTo: so the result would print as expected. Any floating point magician out there? ;)
>>>
>>> - Bert -
>>
>> This would be something like:
>>
>> roundToDecimalPlaces: d
>>    ^(self asTrueFraction roundTo: (1/10 raisedTo: d)) asFloat
>>
>> slightly different from Pharo initial proposition
>> http://code.google.com/p/pharo/issues/detail?id=5590
>> round: d
>>    ^((self * (10 raisedTo: d)) rounded / (10 raisedTo: d)) asFloat
>>
>> For example, with receiver 0.995, we have 0.995 < (995/1000) so the former is
>>
>>    (0.995 roundToDecimalPlaces: d) -> 0.99
>>
>> while the later is
>>
>>    (0.995 round: 2) -> 1.0
>
> Ah, I remember that discussion now. That Pharo version is 10x more efficient than the one using asTrueFraction, though. I'd be happy with that I guess.
>
>> REMINDER: I started http://ss3.gemstone.com/ss/NumberPrinter to factor
>> a few Float printing methods
>> However, my initial solution is not very flexible because it relies
>> too much on inheritance.
>> It's already a progress compared to explosion of duplications in current trunk.
>>
>> Nicolas
>
> Feature request: allow to print with thousands grouping, i.e. a space between every 3 digits :)
>
> - Bert -
>

Sure, that's typically the limitation with this mixture of
parametrization and inheritance (used only for main format parameter).
We can add such a feature with a new parameter, but will have to
modify the existing classes & algorithms...
It's not easily extensible (by third party optional modules).

Nicolas

>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-bf.488.mcz

Nicolas Cellier
In reply to this post by Bert Freudenberg
2012/7/9 Bert Freudenberg <[hidden email]>:

>
> On 2012-07-09, at 22:18, Nicolas Cellier wrote:
>
>> 2012/7/9 Bert Freudenberg <[hidden email]>:
>>> On 2012-07-09, at 17:57, Chris Muller wrote:
>>>
>>>> Beat me to it but you forgot to update the sends to
>>>> #asStringWithCommasSigned.  It was deprecated because this is the only
>>>> sender and it's an exceptional case to want to print "+" in front.  We
>>>> should use #asStringWithCommasSigned: true.
>>>
>>> Feel free to improve :)
>>>
>>> Another idea would be to tweak roundTo: so the result would print as expected. Any floating point magician out there? ;)
>>>
>>> - Bert -
>>
>> This would be something like:
>>
>> roundToDecimalPlaces: d
>>    ^(self asTrueFraction roundTo: (1/10 raisedTo: d)) asFloat
>>
>> slightly different from Pharo initial proposition
>> http://code.google.com/p/pharo/issues/detail?id=5590
>> round: d
>>    ^((self * (10 raisedTo: d)) rounded / (10 raisedTo: d)) asFloat
>>
>> For example, with receiver 0.995, we have 0.995 < (995/1000) so the former is
>>
>>    (0.995 roundToDecimalPlaces: d) -> 0.99
>>
>> while the later is
>>
>>    (0.995 round: 2) -> 1.0
>
> Ah, I remember that discussion now. That Pharo version is 10x more efficient than the one using asTrueFraction, though. I'd be happy with that I guess.
>

If the purpose is to print, then the printer will use LargeInteger
arithmetic anyway.
So you would pay at most a factor 2x, not a factor 10x.

Nicolas