[squeak-dev] The Inbox: Chronology-Core-mt.51.mcz

Chris Cunningham cunningham.cb at gmail.com
Wed Nov 13 04:50:15 UTC 2019


I've personally used #asAbbreviated...String (Bytes and Hz - two cases I
have).  I guess more generally #asAbbreviatedString might work.  Or in this
case #asAbbreviatedFractionalSeconds?


You just need to know exactly how you round/divide to get what you want.
(Bytes I divide by 1024; HZ by 1000)

-cbc

On Tue, Nov 12, 2019 at 3:26 PM Chris Muller <ma.chris.m at gmail.com> wrote:

> (Palm meets forehead.  :)  )
>
> Still, not obvious what would be a good name.  #asMetricDescription?
>  #printSiUnits?
>
> And, actually, a more general function would seem to beg for more
> configurability -- like full-name vs. abbreviation, as well the possibility
> of specifying a precision.
>
> I'll have to think about it, thanks...
>
>
>
> On Tue, Nov 12, 2019 at 3:04 AM Marcel Taeumel <marcel.taeumel at hpi.de>
> wrote:
>
>> Heyho.
>>
>> > ... but I think extends even beyond "bytes descriptions" ...
>>
>> +1 The "bytes" domain is way too specific for this kind of functionality
>>
>> https://en.wikipedia.org/wiki/Metric_prefix
>>
>> Best,
>> Marcel
>>
>> Am 12.11.2019 04:42:05 schrieb Chris Muller <asqueaker at gmail.com>:
>> Hi guys,
>>
>> This looks like a lot of thought went into making an output that we want
>> to be both functional as well as easy to read.
>>
>> On a similar topic, has anyone else been finding #asBytesDescription to
>> be similarly useful for reporting integral quantities, when the top three
>> orders of precision are enough?  What I like about it is how it lets me
>> express any integer all the way up to (2 raisedTo: 99) in no more than
>> *four* characters.  See?
>>
>>    9999 asBytesDescription     "10k"
>>    (2 raisedTo: 99) asBytesDescription     "  '634Y'  <--- Yotta's"
>>
>> This is a wonderfully dense representation, but I think extends even
>> beyond "bytes descriptions" -- I think we need a better name for it...  Is
>> there a proper academic name for this representation?
>>
>>  - Chris
>>
>>
>> On Mon, Nov 11, 2019 at 4:40 AM <commits at source.squeak.org> wrote:
>>
>>> A new version of Chronology-Core was added to project The Inbox:
>>> http://source.squeak.org/inbox/Chronology-Core-mt.51.mcz
>>>
>>> ==================== Summary ====================
>>>
>>> Name: Chronology-Core-mt.51
>>> Author: mt
>>> Time: 11 November 2019, 11:40:16.217633 am
>>> UUID: 199ad2ea-67cb-2545-84e9-4f24e577216f
>>> Ancestors: Chronology-Core-mt.50
>>>
>>> Improve formatting for GC pressure as suggested by Dave.
>>>
>>> =============== Diff against Chronology-Core-mt.50 ===============
>>>
>>> Item was changed:
>>>   ----- Method: BlockClosure>>benchFor: (in category '*chronology-core')
>>> -----
>>>   benchFor: aDuration
>>>         "See how many times I can value within the given duration.  I'll
>>> answer a meaningful description."
>>>
>>>         | startTime shouldRun count elapsedTime roundTo3Digits delay
>>> gcStart gcTime |
>>>         roundTo3Digits := [:num |
>>>                 | rounded lowDigit |
>>>                 rounded := (num * 1000) rounded. "round to 1/1000"
>>>                 lowDigit := (rounded numberOfDigitsInBase: 10) - 3.
>>> "keep only first 3 digits"
>>>                 rounded := rounded roundTo:(10 raisedTo: lowDigit).
>>>                 (lowDigit >= 3 or: [rounded \\ 1000 = 0]) "display
>>> fractional part only when needed"
>>>                         ifTrue: [(rounded // 1000) asStringWithCommas]
>>>                         ifFalse: [(rounded / 1000.0) printString]].
>>>         delay := aDuration asDelay.
>>>         count := 0.
>>>         shouldRun := true.
>>>         Smalltalk garbageCollect.
>>>         [ delay wait. shouldRun := false ] forkAt: Processor
>>> timingPriority - 1.
>>>         startTime := Time millisecondClockValue.
>>>         gcStart := (Smalltalk vmParameterAt: 8) + (Smalltalk
>>> vmParameterAt: 10).
>>>         [ shouldRun ] whileTrue: [
>>>                 self value.
>>>                 count := count + 1 ].
>>>         elapsedTime := Time millisecondsSince: startTime.
>>>         gcTime := (Smalltalk vmParameterAt: 8) + (Smalltalk
>>> vmParameterAt: 10) - gcStart.
>>>         ^(roundTo3Digits value: count * 1000 / elapsedTime) , ' per
>>> second.', ((
>>>                 #(
>>>                         (1e-3 'seconds')
>>>                         (1 'milliseconds')
>>>                         (1e3 'microseconds')
>>>                         (1e6 'nanoseconds')
>>>                 )
>>>                         detect: [ :pair | elapsedTime * pair first >=
>>> count ]
>>>                         ifNone: [ #(1e9 'picoseconds') ])
>>>                 in: [ :pair |
>>>                         ' {1} {2} per run.' format: {
>>>                                 (roundTo3Digits value: elapsedTime *
>>> pair first / count).
>>> +                               pair second } ]), (' {1} % GC time.'
>>> format: {gcTime / elapsedTime * 100 printShowingMaxDecimalPlaces: 5})!
>>> -                               pair second } ]), (' {1} % GC time.'
>>> format: {gcTime / elapsedTime * 100 roundTo: 0.0001})!
>>>
>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191112/ac85a4f6/attachment.html>


More information about the Squeak-dev mailing list