From 96949905b910f1a52060ca4f33b6575bf493d211 Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Sat, 26 Dec 2020 09:30:04 +0000 Subject: [PATCH] Cache entry display names This improves the title page load time (#116) --- src/library/title.cr | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/library/title.cr b/src/library/title.cr index f3d8b2f..52e9838 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -3,7 +3,8 @@ require "../archive" class Title property dir : String, parent_id : String, title_ids : Array(String), entries : Array(Entry), title : String, id : String, - encoded_title : String, mtime : Time + encoded_title : String, mtime : Time, + entry_display_name_cache : Hash(String, String)? def initialize(@dir : String, @parent_id, storage, @library : Library) @@ -129,13 +130,17 @@ class Title end def display_name(entry_name) - dn = entry_name - TitleInfo.new @dir do |info| - info_dn = info.entry_display_name[entry_name]? - unless info_dn.nil? || info_dn.empty? - dn = info_dn + unless @entry_display_name_cache + TitleInfo.new @dir do |info| + @entry_display_name_cache = info.entry_display_name end end + + dn = entry_name + info_dn = @entry_display_name_cache.not_nil![entry_name]? + unless info_dn.nil? || info_dn.empty? + dn = info_dn + end dn end