Cache entry display names

This improves the title page load time (#116)
This commit is contained in:
Alex Ling 2020-12-26 09:30:04 +00:00
parent 7a7cb78f82
commit 96949905b9

View File

@ -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