Is the performance of comparing datetime datatypes slower than datenum

8 visualizaciones (últimos 30 días)
I'm finding where a desired timestamp (`datetime`) fits within a large datetime array. However, this step takes a very long time and from the profiler, it appears most of the time is spent on datevec. Would it be faster to convert everything over to datenum values?
Currently the comparison step looks like this:
tol = duration(0,0,0,40);
time = datetime(timeIn);
idx = arrayfun(@(x) find(abs(x.time-time)<=tol),obj,'uni',0);
  1 comentario
dpb
dpb el 15 de Jul. de 2016
What's the form of timeIn? What may help is to give the specific format; at one time (I believe/maybe still does?) datenum looked at each element if a format wasn't provided which was much slower than with the appropriate format.
I'd not be terribly surprised if as a rule datetime is somewhat slower than datenum simply because it's more capable as well as the object stuff will add some overhead as well, in all likelihood.
I can't test the comparative here, though...

Iniciar sesión para comentar.

Respuesta aceptada

Tom
Tom el 16 de Jul. de 2016
Based on testing, it is much faster to compare dates using datenum instead of datetime, even after converting to datenum from datetime. I'm supposing dpb was correct about the overhead involved in the datetime datatype, but I'm only speculating. It is nice to know that converting within a calculation improves performance, because the datetime type is very convenient in all other aspects.
tic; arrayfun(@(x) find(abs(datenum(x.dateTime)-datenum(timeDate))<=tol),obj(1),'uni',0); toc;
Elapsed time is 0.021072 seconds.
tic; arrayfun(@(x) find(abs(datenum(x.dateTime)-datenum(timeDate))<=datenum(tol)),obj(1),'uni',0); toc;
Elapsed time is 0.007963 seconds.

Más respuestas (0)

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by