On 22 June 2012 20:46, Sven Van Caekenberghe <[email protected]> wrote:
> We have DateAndTime and TimeStamp, which are generally useful objects with 
> lots of features.
>
> But for a lot of applications, they are too heavy. In server side code, 
> timestamps are almost always in UTC (timezone zero). In most cases, 
> nanosecond or millisecond precision are not (really) needed. Unix/Posix time 
> has only second precision.
>
> I wrote ZTimestamp as an alternative for DateAndTime and TimeStamp.
> It has second precision and lives in the UTC/GMT/Zulu timezone.
> It uses ISO/International conventions and protocols only.
> ZTimestamp is more efficient: it uses half the memory of DateAndTime and is 
> faster.
>
> You can find it in
>
>        http://mc.stfx.eu/Neo
>
> ConfigurationOfZTimestamp is also available from
>
>        http://www.squeaksource.com/MetacelloRepository
>        http://squeaksource.com/MetaRepoForPharo14
>        http://ss3.gemstone.com/ss/MetaRepoForPharo20
>
> Here are some benchmarks:
>
> [ 1000 timesRepeat: [ ZTimestamp now ] ] bench '1,910 per second.'
> [ 1000 timesRepeat: [ DateAndTime now ] ] bench '253 per second.'

what? 253 per second? what it doing there?

>
> [ 1000 timesRepeat: [ ZTimestamp fromString: '2012-06-18T07:51:40Z' ] ] bench 
> '161 per second.'
> [ 1000 timesRepeat: [ DateAndTime fromString: '2012-06-18T07:51:40Z' ] ] 
> bench '44.9 per second.'
>
> [ 1000 timesRepeat: [ ZTimestamp now printString ] ] bench '212 per second.'
> [ 1000 timesRepeat: [ DateAndTime now printString ] ] bench '82.3 per second.'
> [ 1000 timesRepeat: [ TimeStamp now printString ] ] bench '54.2 per second.'
>
>
> [ 1000 timesRepeat: [ (ZTimestamp fromUnixTime: 1340006939) = (ZTimestamp 
> fromUnixTime: 2540006939) ] ] bench '377 per second.'
> [ 1000 timesRepeat: [ (DateAndTime fromUnixTime: 1340006939) = (DateAndTime 
> fromUnixTime: 2540006939) ] ] bench '142 per second.'
>
> [ 1000 timesRepeat: [ (ZTimestamp fromUnixTime: 1340006939) < (ZTimestamp 
> fromUnixTime: 2540006939) ] ] bench '376 per second.'
> [ 1000 timesRepeat: [ (DateAndTime fromUnixTime: 1340006939) < (DateAndTime 
> fromUnixTime: 2540006939) ] ] bench '134 per second.'
>
> [ 1000 timesRepeat: [ (ZTimestamp fromUnixTime: 1340006939) + 10 days ] ] 
> bench '604 per second.'
> [ 1000 timesRepeat: [ (DateAndTime fromUnixTime: 1340006939) + 10 days ] ] 
> bench '142 per second.'
>
> [ 1000 timesRepeat: [ (ZTimestamp fromUnixTime: 1340006939) - (ZTimestamp 
> fromUnixTime: 2540006939) ] ] bench '239 per second.'
> [ 1000 timesRepeat: [ (DateAndTime fromUnixTime: 1340006939) - (DateAndTime 
> fromUnixTime: 2540006939) ] ] bench '98.8 per second.'
>
>
> [ 1000 timesRepeat: [ (ZTimestamp year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) = (ZTimestamp year: 2011 month: 5 day: 2 hour: 4 minute: 4 
> second: 4) ] ] bench '2,040 per second.'
> [ 1000 timesRepeat: [ (DateAndTime year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) = (DateAndTime year: 2011 month: 5 day: 2 hour: 4 minute: 4 
> second: 4) ] ] bench '1,800 per second.'
>
> [ 1000 timesRepeat: [ (ZTimestamp year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) < (ZTimestamp year: 2011 month: 5 day: 2 hour: 4 minute: 4 
> second: 4) ] ] bench '2,220 per second.'
> [ 1000 timesRepeat: [ (DateAndTime year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) < (DateAndTime year: 2011 month: 5 day: 2 hour: 4 minute: 4 
> second: 4) ] ] bench '1,050 per second.'
>
> [ 1000 timesRepeat: [ (ZTimestamp year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) + 10 days ] ] bench '1,970 per second.'
> [ 1000 timesRepeat: [ (DateAndTime year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) + 10 days ] ] bench '245 per second.'
>
> [ 1000 timesRepeat: [ (ZTimestamp year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) - (ZTimestamp year: 2011 month: 5 day: 2 hour: 4 minute: 4 
> second: 4) ] ] bench '1,440 per second.'
> [ 1000 timesRepeat: [ (DateAndTime year: 2012 month: 7 day: 1 hour: 8 minute: 
> 8 second: 8) - (DateAndTime year: 2011 month: 5 day: 2 hour: 4 minute: 4 
> second: 4) ] ] bench '767 per second.'
>
>
> ZTimestamp is *not* meant as a general replacement for DateAndTime or 
> TimeStamp. But in a lot of cases, it can be more efficient.
>
> Feedback and users are welcome.
>
>
> Sven
>
>
> --
> Sven Van Caekenberghe
> http://stfx.eu
> Smalltalk is the Red Pill
>
>
>
>
>



-- 
Best regards,
Igor Stasenko.

Reply via email to