[web-devel] Caching the System time

Michael Snoyman michael at snoyman.com
Sat Aug 6 20:11:15 CEST 2011


Without having delved into the issue in any great depth, I had a
possible idea on this point. How about storing an IORef containing a
time and the text representations you need. Whenever you need to get
the time, compare the time in the IORef with the current time, and if
they're different, update appropriately. Bonus points: store in an
unpacked datatype and use a Builder instead of String. Would this (in
theory) work?

On Sat, Aug 6, 2011 at 7:18 PM, Gregory Collins <greg at gregorycollins.net> wrote:
> FWIW: we don't cache the system time because it's slow to *get* it -- we
> cache it because it's slow to turn it into a text string (for HTTP
> responses, logging, etc). It still may be a stupid thing to do, but it
> benchmarked faster when I wrote it.
> G
>
> On Fri, Aug 5, 2011 at 7:47 PM, Bryan O'Sullivan <bos at serpentine.com> wrote:
>>
>> On Fri, Aug 5, 2011 at 7:57 AM, Greg Weber <greg at gregweber.info> wrote:
>>>
>>> We are finally getting around to implementing a robust logging solution
>>> within Yesod. This creates the issue of having to frequently access the
>>> system time. I see that Snap has a separate thread to get the system time
>>> and cache the result [1].
>>
>> That is an absurd non-optimisation. It costs just a few dozen nanoseconds
>> to get the time of day under OS X, and Linux should be even cheaper since it
>> doesn't involve a system call. It wouldn't surprise me if the approach above
>> is actually slower.
>> _______________________________________________
>> web-devel mailing list
>> web-devel at haskell.org
>> http://www.haskell.org/mailman/listinfo/web-devel
>>
>
>
>
> --
> Gregory Collins <greg at gregorycollins.net>
>
> _______________________________________________
> web-devel mailing list
> web-devel at haskell.org
> http://www.haskell.org/mailman/listinfo/web-devel
>
>



More information about the web-devel mailing list