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

Chris Muller asqueaker at gmail.com
Tue Nov 12 03:41:19 UTC 2019


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/20191111/52b3f835/attachment.html>


More information about the Squeak-dev mailing list