[glib/wip/antoniof/fallback-timezone-cache-lookup: 2/3] gtimezone: Also lookup fallback ids in the cached timezones




commit 1b7ef67b2b9944040278fa2c900d1ef99b06ae42
Author: António Fernandes <antoniof gnome org>
Date:   Wed Sep 23 19:03:03 2020 +0100

    gtimezone: Also lookup fallback ids in the cached timezones
    
    We cache GTimeZone instances to avoid expensive construction when the
    same id is requested again.
    
    However, if no id is passed, we always construct a new instance for the
    default/fallback timezone, even if later doesn't change.
    
    With the recent introduction of some heavy calculations [1], repeated
    instance construction in such cases has visible performance impact in
    nautilus list view and other such GtkTreeView consumers.
    
    Now that we get the resolved_identifier ealier, we can account for the
    default/fallback timezone when looking up for existing instances in the
    cache.
    
    Fixes: https://gitlab.gnome.org/GNOME/glib/-/issues/2204
    
    Based on idea proposed by Sebastian Keller <skeller gnome org>
    
    [1] 25d950b61f92f25cc9ab20d683aa4d6969f93098

 glib/gtimezone.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/glib/gtimezone.c b/glib/gtimezone.c
index bc6c0dc91..f7bb9ff19 100644
--- a/glib/gtimezone.c
+++ b/glib/gtimezone.c
@@ -1670,9 +1670,9 @@ g_time_zone_new (const gchar *identifier)
 #endif
     }
 
-  if (identifier)
+  if (resolved_identifier)
     {
-      tz = g_hash_table_lookup (time_zones, identifier);
+      tz = g_hash_table_lookup (time_zones, resolved_identifier);
       if (tz)
         {
           g_atomic_int_inc (&tz->ref_count);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]