Skip to content

Any tips on how to speed up build of a _very_ large table? (~1500 rows) #1374

Closed
@flynneva

Description

@flynneva

First off - thanks for the awesome project 🙏🏼

I use the mkdocs-material + python-markdown integration quite heavily with the docs I build and I am running into a corner case which I'm not quite sure how best to improve / optimize.

We have a super large markdown table (~1500 rows with 3 columns, with md links in each cell) that is auto-generated and when trying to build with mkdocs build, it hangs specifically on the python-markdown bit and takes ~30min just to build that one file 😅

The last debug print I see before the ~30min wait until the next file are some Successfully imported extension and Successfully loaded extension from core.py within this package:

 DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.toc.TocExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.tables.TableExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.fenced_code.FencedCodeExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.meta.MetaExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.admonition.AdmonitionExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.attr_list.AttrListExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.footnotes.FootnoteExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "markdown.extensions.md_in_html.MarkdownInHtmlExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.highlight".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.highlight.HighlightExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.snippets".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.snippets.SnippetExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.details".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.details.DetailsExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.tabbed".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.tabbed.TabbedExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.saneheaders".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.saneheaders.SaneHeadersExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.keys".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.keys.KeysExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.tasklist".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.tasklist.TasklistExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.arithmatex".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.arithmatex.ArithmatexExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.inlinehilite".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.highlight".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.highlight.HighlightExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.inlinehilite.InlineHiliteExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.superfences".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx._bypassnorm".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx._bypassnorm.BypassNormExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.highlight".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.highlight.HighlightExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.superfences.SuperFencesCodeExtension".
[ DEBUG    ][ MARKDOWN ][ core.py:163  ] Successfully imported extension module "pymdownx.emoji".
[ DEBUG    ][ MARKDOWN ][ core.py:126  ] Successfully loaded extension "pymdownx.emoji.EmojiExtension".

After this last print it hangs for ~30min until moving onto the next file.

Main questions

  1. I cant tell which extension is taking a long time...any tips on how to see more granular debug prints (or is the best way here to add my own to each extension?)
  2. Is there some trick to speed up build times here for super large tables?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions