[squeak-dev] The Inbox: Chronology-Core-mt.51.mcz
David T. Lewis
lewis at mail.msen.com
Wed Nov 13 04:51:13 UTC 2019
Meanwhile, +1 for moving Marcel's Chronology changes to trunk :-)
Dave
On Tue, Nov 12, 2019 at 05:25:46PM -0600, Chris Muller 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})!
> >>
> >>
> >>
>
More information about the Squeak-dev
mailing list
|