Emmanuele Bassi
026375b395
datetime: Avoid excessive copies in add_full()
...
The current implementation of g_date_time_add_full() creates multiple
GDateTime temporary objects and unrefs them immediately; even with the
slice allocator this could result in a performance bottleneck,
especially if the atomic integer operations fall back to slow paths.
We can isolate the components of the add_full() operation and create
internal modifiers that operate on an existing GDateTime; this brings
down the number of GDateTime copies created from six to one.
While at it, the test suite for add_full() should have more checks for
roll-over of months and days.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2010-08-25 23:04:42 +01:00
..
2007-01-03 11:22:36 +00:00
2010-08-06 13:10:34 -04:00
2010-08-06 13:10:34 -04:00
2010-08-23 12:34:53 -05:00
2010-08-25 23:04:42 +01:00
2010-08-06 13:10:34 -04:00
2010-07-12 15:33:05 -04:00
2010-07-12 15:33:05 -04:00
2008-05-05 15:02:15 +00:00
2010-08-08 23:55:11 -04:00
2009-04-29 11:17:23 -04:00
2010-08-13 00:33:04 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2010-07-10 23:56:45 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2008-09-26 14:33:48 +00:00
2010-08-08 23:55:11 -04:00
2009-01-13 19:59:32 +00:00
2010-07-07 19:34:35 -04:00
2010-01-30 12:32:37 -05:00
2010-08-03 10:25:54 -04:00
2010-07-10 23:56:45 -04:00
2009-07-20 16:03:25 -04:00
2010-07-07 19:34:35 -04:00
2010-03-14 15:56:18 -04:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2008-06-15 00:03:54 +00:00
2010-07-07 19:34:35 -04:00
2010-06-23 22:32:35 -04:00
2010-08-13 21:11:19 -04:00
2010-08-08 23:55:11 -04:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2009-02-17 16:14:39 +00:00
2010-08-01 07:22:11 +02:00
2008-05-05 15:02:15 +00:00
2010-08-25 23:04:42 +01:00
2010-08-24 23:41:21 +01:00
2007-05-17 16:36:53 +00:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2008-04-08 02:59:05 +00:00
2005-11-04 22:27:04 +00:00
2010-07-07 19:34:35 -04:00
2009-05-23 17:52:58 +02:00
2010-07-07 19:34:35 -04:00
2009-09-04 22:45:07 +02:00
2010-07-07 19:34:35 -04:00
2010-01-28 22:36:48 -05:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2009-04-22 08:36:02 -04:00
2008-09-11 16:48:44 +00:00
2008-09-11 16:48:44 +00:00
2010-07-07 19:34:35 -04:00
2008-07-28 00:24:14 +00:00
2010-07-10 20:09:34 -04:00
2010-07-10 20:09:34 -04:00
2010-07-07 19:34:35 -04:00
2010-05-08 21:30:27 -04:00
2010-05-27 14:51:41 -04:00
2010-05-27 14:51:41 -04:00
2010-06-15 16:06:18 +01:00
2010-08-24 23:41:21 +01:00
2010-07-07 19:34:35 -04:00
2010-02-04 00:12:50 +02:00
2010-05-27 14:51:41 -04:00
2010-08-24 23:41:21 +01:00
2010-07-12 15:33:05 -04:00
2010-08-24 22:48:15 +01:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-04-23 15:26:49 +01:00
2010-07-10 23:56:45 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2009-06-18 15:01:18 -04:00
2010-07-07 19:34:35 -04:00
2008-07-28 16:52:15 +00:00
2010-07-21 16:11:35 -04:00
2010-07-12 17:31:03 -04:00
2010-07-07 19:34:35 -04:00
2009-06-27 11:03:47 +03:00
2008-04-08 02:59:05 +00:00
2010-07-07 19:34:35 -04:00
2010-07-08 19:26:25 -04:00
2010-08-05 02:24:25 -04:00
2010-02-21 17:59:15 -05:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2010-07-10 23:56:45 -04:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-08 19:23:42 -04:00
2008-03-14 19:30:38 +00:00
2004-07-21 17:51:28 +00:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-08-16 15:30:04 -04:00
2010-08-08 23:55:11 -04:00
2010-07-07 19:34:35 -04:00
2010-06-23 22:32:35 -04:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2008-04-08 02:59:05 +00:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2010-02-22 00:35:45 -05:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2008-08-04 18:46:59 +00:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-12 16:56:52 -04:00
2010-03-30 20:46:46 +03:00
2010-07-12 16:56:52 -04:00
2010-05-20 21:16:29 +02:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-06-15 02:01:16 -04:00
2010-08-07 19:59:36 -04:00
2010-07-12 16:56:52 -04:00
2010-07-12 16:56:52 -04:00
2010-07-13 11:59:16 -04:00
2010-05-06 17:42:09 +02:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-01-28 12:40:46 -05:00
2010-07-07 19:34:35 -04:00
2008-05-05 15:02:15 +00:00
2010-07-07 19:34:35 -04:00
2009-07-05 12:30:54 +01:00
2009-11-30 19:53:30 -05:00
2010-07-07 19:34:35 -04:00
2008-04-08 02:59:05 +00:00
2008-04-08 02:59:05 +00:00
2010-06-20 01:14:55 -04:00
2007-07-19 13:46:05 +00:00
2010-07-07 19:34:35 -04:00
2006-07-19 22:35:17 +00:00
2010-07-07 19:34:35 -04:00
2006-07-19 22:35:17 +00:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00
2010-01-30 00:01:26 -05:00
2010-07-12 16:56:52 -04:00
2010-07-07 19:34:35 -04:00
2010-08-05 23:18:45 +02:00
2010-07-07 19:34:35 -04:00
2010-02-10 11:35:01 -05:00
2010-03-08 10:31:19 -05:00
2010-07-31 02:07:38 -04:00
2010-07-07 19:34:35 -04:00
2010-03-08 10:31:19 -05:00
2010-08-13 22:42:24 -04:00
2010-07-07 16:25:48 -04:00
2010-07-07 19:34:35 -04:00
2010-07-07 16:25:48 -04:00
2010-07-07 19:34:35 -04:00
2010-03-08 10:31:19 -05:00
2010-07-07 19:34:35 -04:00
2008-09-13 20:23:17 +00:00
2009-09-21 15:39:00 +02:00
2010-08-24 23:41:21 +01:00
2010-07-07 19:34:35 -04:00
2010-07-07 19:34:35 -04:00