[squeak-dev] The Trunk: System-bf.488.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Mon Jul 9 20:18:27 UTC 2012
2012/7/9 Bert Freudenberg <bert at freudenbergs.de>:
> 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, <commits at source.squeak.org> 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
>>> !
>>>
>>>
>>
>
>
>
>
More information about the Squeak-dev
mailing list
|