[GemStone-Smalltalk] DateAndTime users' questionnaire
Paul DeBruicker
pdebruic at gmail.com
Thu Jun 25 12:59:10 PDT 2020
Hi Mang,
In the Java program, with the integer representation, how did you handle
Daylight savings transitions when doing comparisons or instantiating
objects?
Thanks
Paul
Gemstone/S mailing list wrote
> I was working on a Shipping operation application called IRIS2 long time
> ago. We canonicalized the DataTime to reduce the number of instances
> created that represent the same time. Our resolution is 1 minute to
> reduce the number of instances we need to create.
> Recently, while working on a Java application we also need DateTime, we
> represented DateTime using the format YYYYMMDDHHMMSS.mmm. This format can
> be represented as an Integer (64bit) in GemStone. In GemStone, if I
> remember correctly it does not create a new object but embedded 64 bit
> Integer in the object pointer. So no extra space taken. And you can
> implement getter and setter that can dynamically return a transient
> DateTime object. I used this technique in Java because we cached a lot of
> objects in the VM. This will save a lot of memory space.
> This YYYYMMDDHHMMSS.mmm representation is much more readable but at a cost
> of converting when you need to print them.
> Mang
> On Friday, June 19, 2020, 06:37:06 PM PDT, Paul Baumann via
> GemStone-Smalltalk <
> gemstone-smalltalk at .gemtalksystems
> > wrote:
>
> I'm excited for this change, it will make a huge performance difference
> having dates as immediates.
> I had done this in tuning in application code where most beneficial. It
> would persist an immediate integer that was seconds, ms, or ns from an
> epoch datetime. Replication to gbs was then a very efficiently of course
> as cache costs were skipped. The slot contained the integer and accessor
> methods made it look like a datetime was stored. The accessor methods used
> DateTime extensions (like maybe #ms:fromEpoch:, #seconds:fromEpoch:
> #msFromEpoch:, and #secondsFromEpoch:) to do conversions between integer
> and DateTime instances according to the epoch and granularity the
> accessors had consistently specified for the slot in both objectspaces
> (gbs and gs). This allowed for incremental application tuning and epoch
> control most efficient for the attribute needs.
>
> The epoch that I selected for most slots was probably 1/1/2000, but it
> might have also been more recent if the attribute didn't need older dates
> stored efficiently. Sorry, I don't recall what epoch and granularity was
> generally most useful for most attributes. If polymorphism can be assumed
> then you might as well pick an epoch in the near future and dates forward
> will become more efficient.
> Paul Baumann
>
>
> On Fri, Jun 19, 2020, 7:46 PM Martin McClure via GemStone-Smalltalk <
> gemstone-smalltalk at .gemtalksystems
> > wrote:
>
> If you use DateAndTime in your GemStone application, we at GemTalk would
> very much appreciate your feedback on the questions below.
>
> At customer request, we're working on a SmallDateAndTime class for
> GemStone -- a "Special" (immediate) version of DateAndTime that relates
> to DateAndTime similarly to the relationship between SmallInteger and
> LargeInteger. For customers with many persistent DateAndTime instances,
> this should improve both space and time performance.
>
> There are design tradeoffs in resolution, range, printing, etc., and it
> will help us make better decisions if we know how DateAndTime is being
> used now.
>
> (1) Which of the following messages do you use to create DateAndTime
> instances?
> * DateAndTime now
> * DateAndTime nowWithScale:
> * DateAndTime fromString:
> * DateAndTime year:day:hour* or year:month:day:hour*
> * Other protocol
>
> (2) Do you need DateAndTimes with resolution finer than a microsecond?
>
> (3) What is your year range of DateAndTime; do you need or use
> DateAndTimes more than 5/10/50 years into the future (or the past)?
>
> (4) How do you handle DateAndTime printing?
>
> (5) Have you created a subclass of DateAndTime or DateAndTimeANSI, or
> added your own methods to DateAndTime or DateAndTimeANSI? If this is
> general functionality that could be useful to include in the base,
> please let us know.
>
> (6) DateAndTime instances would need to be immutable, to be
> interoperable with SmallDateAndTime. If you are using methods that do
> update a DateAndTime, such as offset: or beRounded, does your code
> expect the receiver to be modified?
> _______________________________________________
> GemStone-Smalltalk mailing list
> GemStone-Smalltalk at .gemtalksystems
> https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk
>
> _______________________________________________
> GemStone-Smalltalk mailing list
> GemStone-Smalltalk at .gemtalksystems
> https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk
>
> _______________________________________________
> GemStone-Smalltalk mailing list
> GemStone-Smalltalk at .gemtalksystems
> https://lists.gemtalksystems.com/mailman/listinfo/gemstone-smalltalk
--
Sent from: http://forum.world.st/Gemstone-S-f1461796.html
More information about the GemStone-Smalltalk
mailing list