Improves "load" time for all performance tests that load data by ~20%.
- "next" down 15% total
- "list" down 7% total
- "all" down 3% total
- "add" down 15% total
- "export" down 8% total
- "import" down 6% total
Some systems come without timegm function in standard library. Taskwarrior
already has its own implementation defined in util.c. However, this has
never been used as util.h has not been included.
Takes the "import" performance test from 5m5s on a test machine to 13s
total.
A huge part of the previously morbid performance were memory allocation
and release for very little benefit in the JSON parser. With this new
approach the copying is kept to a minimum. There is still room for
improvements.
- TW-1265 cannot add UDA with underscore (thanks to Jakub Wilk).
- Added unit tests for TW-1265.
- Added ChangeLog and AUTHOR entries for other fixed issues.
- Factorize code for parsing date elements.
- Better order of blocks for parsing date elements.
- Add corresponding minimal-digit date parsing method for reading seconds,
minutes and week.
- Update documentation and test.
- Remove the code related to the format "day of year" (number of day starting
from the January 1) as mktime does not allow to specify it with the field
tm_yday.
- Cleaner check of the date (everything is done by Date::valid).
- Correct hour, minute and second is also checked.
- Undefined variables are put to today in dates (if year and month is not
specified, the current ones are considered). But if a global ones is
specified, lower one are put to their default values (0 or 1).
- Fixed a bug that caused a commond dateformat (YDM-HN) to be misinterpreted
as a UUID. Solution is to increase minimum partial UUID length from 9 to
14.