On Thursday 12 Sep 2013 13:48:24 Thiago Macieira wrote: > On quinta-feira, 12 de setembro de 2013 21:06:03, John Layt wrote: > > * Choose either local msecs or epoch msecs, if epoch then that change > > can't > > be done for 5.2 > > Choose the easiest for you to implement. We're running out of time, so I'd > rather stick to the implementation you have and your best recommendation.
I've spent the evening writing and running some benchmark tests (amazingly we didn't have any before). Each benchmark creates a date a day for 10 years and calls the tested method, so 3650 consecutive dates. The numbers here are from 1000 iterations on my i7. As expected they're a mixed return with some things faster and some things slower (not all tests shown): Action Base Msecs % -------------------------- ----- ----- ---- create(): 0.294 0.392 33 isValid(): 0.339 0.492 45 date(): 0.313 0.632 102 time(): 0.311 0.639 105 timeSpec(): 0.311 0.403 30 offsetFromUtc(): 7.466 9.009 21 toMSecsSinceEpoch(): 6.690 8.836 32 toMSecsSinceEpoch1950(): 7.522 3.642 -52 toMSecsSinceEpoch2050(): 8.618 10.790 25 setDate(): 0.418 0.832 99 setTime(): 0.385 0.820 113 setTimeSpec(): 0.340 0.508 49 setOffsetFromUtc(): 0.347 0.438 26 setMSecsSinceEpoch(): 6.020 2.564 -57 addDays(): 0.701 1.129 61 addMonths(): 1.836 2.270 24 addYears(): 1.826 2.255 23 addMSecs(): 12.820 10.370 -19 toTimeSpec(): 6.900 9.247 34 toOffsetFromUtc(): 7.251 9.292 28 daysTo(): 0.365 0.953 161 msecsTo(): 13.510 17.780 32 equivalent(): 0.367 0.439 20 equivalentUtc(): 6.730 9.018 34 lessThan(): 0.355 0.444 25 lessThanUtc(): 6.714 8.906 33 currentDateTime(): 1.118 0.314 -72 fromMSecsSinceEpoch(): 6.094 2.451 -60 * Things that start with an msecs value (i.e. use localtime) are 60-80% faster * Things that start with a date and time (i.e. use mktime) are 30% slower. * Focusing on optimising toMSecsSinceEpoch() will cause most other methods to speed up, if I remove a tzset call it runs faster than the baseline. * The getting and setting of the date and time are obviously slower as they now involve conversions. * Rather strangely timeSpec() is 30% slower despite now only returning the member directly instead of having to do a switch based on the member, a few other calls are equally confusing. Cheers! John. _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
