Close #7840: i18n: Optimize the dependencies check on bootstrap

Replace a nested-loop comparison by hash-search to improve the
performance of dependencies checks on bootstrap.
This commit is contained in:
Takeshi KOMIYA 2020-07-19 14:22:07 +09:00
parent 00e4a9e5b5
commit 69fc1953c6
2 changed files with 4 additions and 3 deletions

View File

@ -26,6 +26,7 @@ Features added
* #7745: html: inventory is broken if the docname contains a space * #7745: html: inventory is broken if the docname contains a space
* #7902: html theme: Add a new option :confval:`globaltoc_maxdepth` to control * #7902: html theme: Add a new option :confval:`globaltoc_maxdepth` to control
the behavior of globaltoc in sidebar the behavior of globaltoc in sidebar
* #7840: i18n: Optimize the dependencies check on bootstrap
* #7052: add ``:noindexentry:`` to the Python, C, C++, and Javascript domains. * #7052: add ``:noindexentry:`` to the Python, C, C++, and Javascript domains.
Update the documentation to better reflect the relationship between this option Update the documentation to better reflect the relationship between this option
and the ``:noindex:`` option. and the ``:noindex:`` option.

View File

@ -387,11 +387,11 @@ class BuildEnvironment:
# add catalog mo file dependency # add catalog mo file dependency
repo = CatalogRepository(self.srcdir, self.config.locale_dirs, repo = CatalogRepository(self.srcdir, self.config.locale_dirs,
self.config.language, self.config.source_encoding) self.config.language, self.config.source_encoding)
mo_paths = {c.domain: c.mo_path for c in repo.catalogs}
for docname in self.found_docs: for docname in self.found_docs:
domain = docname_to_domain(docname, self.config.gettext_compact) domain = docname_to_domain(docname, self.config.gettext_compact)
for catalog in repo.catalogs: if domain in mo_paths:
if catalog.domain == domain: self.dependencies[docname].add(mo_paths[domain])
self.dependencies[docname].add(catalog.mo_path)
except OSError as exc: except OSError as exc:
raise DocumentError(__('Failed to scan documents in %s: %r') % raise DocumentError(__('Failed to scan documents in %s: %r') %
(self.srcdir, exc)) from exc (self.srcdir, exc)) from exc