Re: AbsoluteTime[] runs slowly?

• To: mathgroup at smc.vnet.net
• Subject: [mg122304] Re: AbsoluteTime[] runs slowly?
• From: Armand Tamzarian <mike.honeychurch at gmail.com>
• Date: Mon, 24 Oct 2011 05:14:26 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <j80qge\$af2\$1@smc.vnet.net>

```On Oct 23, 9:32 pm, Robert McHugh <bob_mchugh_2... at yahoo.com> wrote:
> The following code takes over a minute to run on my machine.  Is this expected behavior?
>
> t = {"14-May-10 09:58:05", {"Day", "-", "MonthNameShort", "-", "YearShort", " ", "Hour", ":", "Minute", ":", "Second"}};
> tList = Table[t, {i, 100000}];
> a = Timing[AbsoluteTime[#] & /@ tList ;]
>
> For reference, an operation like the following takes less than a tenth of a second. (Of course this second example needs quite a bit of modification to provide a correct answer, but it does show how fast the program can operate on a large list.)
> t = {14, 5, 10, 9, 58, 05};
> tList = Table[t, {i, 100000}];
> a = Timing[( ((#[[3]] 0 + #[[2]] 30 + #[[1]]24) + #[[4]]) 60 + #[[5]]) 60 + #[[6]] & /@ tList;]
>
> Some background: am analyzing some historical data (about 500 000 records, one data point a minute for about a year) and am making a few utilities to retrieve the data for any given time interval.   My original plan was to change the time stamp to absolute time and then use a select statement. This step in the above example, changing the time stamps to absolute time, is the rate limiting step in the code (everything else runs in about 5 seconds).
>
> Was wondering if someone could explain why AbsoluteTime[] is relatively slow operation and perhaps some faster operations for date and time comparisons.
>
> Thanks

If your data is regularly spaced at fixed one minute intervals then
just create a list of absolute times directly rather than via a
conversion:

e.g.

startDate = AbsoluteTime[{2010, 1, 1}]
endDate = AbsoluteTime[{2011, 12, 31}]

listofTimes = Range[startDate, endDate, 60]

Once you have your list you can transpose it with your data.

newData=Transpose[{listofTimes, yourData}]

You can then use Select or Cases if you want to pick out chunks in
particular time ranges.

An alternative would be to stick your data in a SQL database and use
the DatabaseLink and call date/time ranges via SQL. That is probably
the option I would use.

Mike

```

• Prev by Date: Re: Creating Objects
• Next by Date: Re: Full simplify problem
• Previous by thread: Re: runs slowly?
• Next by thread: Re: AbsoluteTime[] runs slowly?