[{"data":1,"prerenderedAt":60},["Reactive",2],{"blog-post-markdown-performance-optimization-rendering-speed-guide":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":34,"related":35},"markdown-performance-optimization-rendering-speed-guide","Markdown Performance Optimization and Rendering Speed: Complete Guide for High-Performance Documentation Systems","Master Markdown performance optimization techniques for faster rendering, efficient processing, and scalable documentation systems. Learn caching strategies, parser optimization, and performance monitoring for large-scale content management.","Advanced Markdown performance optimization enables high-speed rendering and efficient processing for large-scale documentation systems that handle thousands of documents with complex content…","2025-09-30","Tutorial","Matthew Rathbone","markdown performance, markdown rendering speed, markdown optimization, markdown parser performance, documentation performance, markdown caching, static site performance, markdown processing speed",25,"\u003Cp>Advanced Markdown performance optimization enables high-speed rendering and efficient processing for large-scale documentation systems that handle thousands of documents with complex content structures. By implementing strategic caching mechanisms, parser optimization techniques, and intelligent content processing workflows, technical teams can achieve dramatic performance improvements that enhance user experience while reducing server load and processing time across documentation platforms and static site generators.\u003C/p>\n\u003Ch2 id=\"why-optimize-markdown-performance\">Why Optimize Markdown Performance?\u003C/h2>\n\u003Cp>Professional Markdown performance optimization provides essential benefits for scalable content systems:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>User Experience\u003C/strong>: Faster page load times and smoother navigation improve reader engagement and satisfaction\u003C/li>\n\u003Cli>\u003Cstrong>Server Efficiency\u003C/strong>: Reduced processing overhead enables handling more concurrent users with fewer resources\u003C/li>\n\u003Cli>\u003Cstrong>Build Performance\u003C/strong>: Optimized rendering reduces static site generation time from hours to minutes\u003C/li>\n\u003Cli>\u003Cstrong>Search Engine Rankings\u003C/strong>: Faster page speeds contribute to better SEO performance and search visibility\u003C/li>\n\u003Cli>\u003Cstrong>Developer Productivity\u003C/strong>: Quicker preview and build cycles improve content creation workflows\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"foundation-performance-analysis\">Foundation Performance Analysis\u003C/h2>\n\u003Ch3 id=\"markdown-parsing-benchmarks\">Markdown Parsing Benchmarks\u003C/h3>\n\u003Cp>Understanding performance characteristics of different Markdown processors:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// markdown-performance-analyzer.js - Comprehensive performance analysis toolkit\u003C/span>\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> fs = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;fs&#x27;\u003C/span>).\u003Cspan class=\"hljs-property\">promises\u003C/span>;\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> path = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;path&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> { performance } = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;perf_hooks&#x27;\u003C/span>);\n\n\u003Cspan class=\"hljs-comment\">// Import various Markdown parsers for comparison\u003C/span>\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> marked = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;marked&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> markdownIt = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;markdown-it&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> remark = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;remark&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> remarkHtml = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;remark-html&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> showdown = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;showdown&#x27;\u003C/span>);\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MarkdownPerformanceAnalyzer\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">iterations\u003C/span>: options.\u003Cspan class=\"hljs-property\">iterations\u003C/span> || \u003Cspan class=\"hljs-number\">100\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">warmupRuns\u003C/span>: options.\u003Cspan class=\"hljs-property\">warmupRuns\u003C/span> || \u003Cspan class=\"hljs-number\">10\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">outputFormat\u003C/span>: options.\u003Cspan class=\"hljs-property\">outputFormat\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;console&#x27;\u003C/span>,\n            ...options\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parsers\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">marked\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Marked&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">parse\u003C/span>: \u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">content\u003C/span>) =&gt;\u003C/span> marked.\u003Cspan class=\"hljs-title function_\">parse\u003C/span>(content)\n            },\n            \u003Cspan class=\"hljs-attr\">markdownIt\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Markdown-It&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">parse\u003C/span>: \u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">content\u003C/span>) =&gt;\u003C/span> \u003Cspan class=\"hljs-title function_\">markdownIt\u003C/span>().\u003Cspan class=\"hljs-title function_\">render\u003C/span>(content)\n            },\n            \u003Cspan class=\"hljs-attr\">remark\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Remark&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">parse\u003C/span>: \u003Cspan class=\"hljs-keyword\">async\u003C/span> (content) =&gt; {\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> processed = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">remark\u003C/span>().\u003Cspan class=\"hljs-title function_\">use\u003C/span>(remarkHtml).\u003Cspan class=\"hljs-title function_\">process\u003C/span>(content);\n                    \u003Cspan class=\"hljs-keyword\">return\u003C/span> processed.\u003Cspan class=\"hljs-title function_\">toString\u003C/span>();\n                }\n            },\n            \u003Cspan class=\"hljs-attr\">showdown\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Showdown&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">parse\u003C/span>: \u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">content\u003C/span>) =&gt;\u003C/span> {\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> converter = \u003Cspan class=\"hljs-keyword\">new\u003C/span> showdown.\u003Cspan class=\"hljs-title class_\">Converter\u003C/span>();\n                    \u003Cspan class=\"hljs-keyword\">return\u003C/span> converter.\u003Cspan class=\"hljs-title function_\">makeHtml\u003C/span>(content);\n                }\n            }\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">benchmarkResults\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Map\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">analyzePerformance\u003C/span>(\u003Cspan class=\"hljs-params\">contentDirectory\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Starting comprehensive Markdown performance analysis...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Load test content\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> testContent = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">loadTestContent\u003C/span>(contentDirectory);\n        \n        \u003Cspan class=\"hljs-comment\">// Run benchmarks for each parser\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [parserKey, parser] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parsers\u003C/span>)) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`\\nBenchmarking \u003Cspan class=\"hljs-subst\">${parser.name}\u003C/span>...`\u003C/span>);\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> results = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">benchmarkParser\u003C/span>(parserKey, parser, testContent);\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">benchmarkResults\u003C/span>.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(parserKey, results);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Generate performance report\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generatePerformanceReport\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">loadTestContent\u003C/span>(\u003Cspan class=\"hljs-params\">contentDirectory\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> testSets = {\n            \u003Cspan class=\"hljs-attr\">small\u003C/span>: [], \u003Cspan class=\"hljs-comment\">// &lt; 1KB\u003C/span>\n            \u003Cspan class=\"hljs-attr\">medium\u003C/span>: [], \u003Cspan class=\"hljs-comment\">// 1KB - 10KB  \u003C/span>\n            \u003Cspan class=\"hljs-attr\">large\u003C/span>: [], \u003Cspan class=\"hljs-comment\">// 10KB - 100KB\u003C/span>\n            \u003Cspan class=\"hljs-attr\">xlarge\u003C/span>: [] \u003Cspan class=\"hljs-comment\">// &gt; 100KB\u003C/span>\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> markdownFiles = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">findMarkdownFiles\u003C/span>(contentDirectory);\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> filePath \u003Cspan class=\"hljs-keyword\">of\u003C/span> markdownFiles) {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> content = \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readFile\u003C/span>(filePath, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>);\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> sizeKB = \u003Cspan class=\"hljs-title class_\">Buffer\u003C/span>.\u003Cspan class=\"hljs-title function_\">byteLength\u003C/span>(content, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>) / \u003Cspan class=\"hljs-number\">1024\u003C/span>;\n                \n                \u003Cspan class=\"hljs-keyword\">if\u003C/span> (sizeKB &lt; \u003Cspan class=\"hljs-number\">1\u003C/span>) {\n                    testSets.\u003Cspan class=\"hljs-property\">small\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({ content, \u003Cspan class=\"hljs-attr\">size\u003C/span>: sizeKB, \u003Cspan class=\"hljs-attr\">path\u003C/span>: filePath });\n                } \u003Cspan class=\"hljs-keyword\">else\u003C/span> \u003Cspan class=\"hljs-keyword\">if\u003C/span> (sizeKB &lt; \u003Cspan class=\"hljs-number\">10\u003C/span>) {\n                    testSets.\u003Cspan class=\"hljs-property\">medium\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({ content, \u003Cspan class=\"hljs-attr\">size\u003C/span>: sizeKB, \u003Cspan class=\"hljs-attr\">path\u003C/span>: filePath });\n                } \u003Cspan class=\"hljs-keyword\">else\u003C/span> \u003Cspan class=\"hljs-keyword\">if\u003C/span> (sizeKB &lt; \u003Cspan class=\"hljs-number\">100\u003C/span>) {\n                    testSets.\u003Cspan class=\"hljs-property\">large\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({ content, \u003Cspan class=\"hljs-attr\">size\u003C/span>: sizeKB, \u003Cspan class=\"hljs-attr\">path\u003C/span>: filePath });\n                } \u003Cspan class=\"hljs-keyword\">else\u003C/span> {\n                    testSets.\u003Cspan class=\"hljs-property\">xlarge\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({ content, \u003Cspan class=\"hljs-attr\">size\u003C/span>: sizeKB, \u003Cspan class=\"hljs-attr\">path\u003C/span>: filePath });\n                }\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">`Skipping file \u003Cspan class=\"hljs-subst\">${filePath}\u003C/span>: \u003Cspan class=\"hljs-subst\">${error.message}\u003C/span>`\u003C/span>);\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Ensure we have test content for each category\u003C/span>\n        \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">keys\u003C/span>(testSets).\u003Cspan class=\"hljs-title function_\">forEach\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">category\u003C/span> =&gt;\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (testSets[category].\u003Cspan class=\"hljs-property\">length\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n                testSets[category] = [\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateSyntheticContent\u003C/span>(category)];\n            }\n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> testSets;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">findMarkdownFiles\u003C/span>(\u003Cspan class=\"hljs-params\">directory\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> files = [];\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> \u003Cspan class=\"hljs-title function_\">scan\u003C/span> = \u003Cspan class=\"hljs-keyword\">async\u003C/span> (\u003Cspan class=\"hljs-params\">dir\u003C/span>) =&gt; {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> entries = \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readdir\u003C/span>(dir, { \u003Cspan class=\"hljs-attr\">withFileTypes\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span> });\n                \n                \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> entry \u003Cspan class=\"hljs-keyword\">of\u003C/span> entries) {\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> fullPath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(dir, entry.\u003Cspan class=\"hljs-property\">name\u003C/span>);\n                    \n                    \u003Cspan class=\"hljs-keyword\">if\u003C/span> (entry.\u003Cspan class=\"hljs-title function_\">isDirectory\u003C/span>() &amp;&amp; !entry.\u003Cspan class=\"hljs-property\">name\u003C/span>.\u003Cspan class=\"hljs-title function_\">startsWith\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span>)) {\n                        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">scan\u003C/span>(fullPath);\n                    } \u003Cspan class=\"hljs-keyword\">else\u003C/span> \u003Cspan class=\"hljs-keyword\">if\u003C/span> (entry.\u003Cspan class=\"hljs-title function_\">isFile\u003C/span>() &amp;&amp; entry.\u003Cspan class=\"hljs-property\">name\u003C/span>.\u003Cspan class=\"hljs-title function_\">endsWith\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.md&#x27;\u003C/span>)) {\n                        files.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(fullPath);\n                    }\n                }\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">`Cannot access directory \u003Cspan class=\"hljs-subst\">${dir}\u003C/span>: \u003Cspan class=\"hljs-subst\">${error.message}\u003C/span>`\u003C/span>);\n            }\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">scan\u003C/span>(directory);\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> files.\u003Cspan class=\"hljs-title function_\">slice\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>, \u003Cspan class=\"hljs-number\">50\u003C/span>); \u003Cspan class=\"hljs-comment\">// Limit for reasonable test time\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateSyntheticContent\u003C/span>(\u003Cspan class=\"hljs-params\">category\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> templates = {\n            \u003Cspan class=\"hljs-attr\">small\u003C/span>: \u003Cspan class=\"hljs-string\">`# Small Test Document\\n\\nThis is a small test document with **basic formatting** and a [link](https://example.com).\\n\\n- List item 1\\n- List item 2`\u003C/span>,\n            \n            \u003Cspan class=\"hljs-attr\">medium\u003C/span>: \u003Cspan class=\"hljs-string\">`# Medium Test Document\\n\\n\u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-string\">&#x27;## Section\\n\\nThis is a paragraph with **bold**, *italic*, and \\`inline code\\`. Here are some lists:\\n\\n- Item 1\\n- Item 2\\n- Item 3\\n\\n```javascript\\nfunction example() {\\n    return &quot;code block&quot;;\\n}\\n```\\n\\n&#x27;\u003C/span>.repeat(\u003Cspan class=\"hljs-number\">10\u003C/span>)}\u003C/span>`\u003C/span>,\n            \n            \u003Cspan class=\"hljs-attr\">large\u003C/span>: \u003Cspan class=\"hljs-string\">`# Large Test Document\\n\\n\u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-string\">&#x27;## Chapter\\n\\n### Section\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. **Bold text** and *italic text* with [links](https://example.com).\\n\\n#### Subsection\\n\\nCode example:\\n\\n```javascript\\nfunction complexFunction(param1, param2) {\\n    const result = param1.map(item =&gt; {\\n        return {\\n            ...item,\\n            processed: param2.includes(item.id)\\n        };\\n    });\\n    return result.filter(item =&gt; item.processed);\\n}\\n```\\n\\n&gt; This is a blockquote with some content.\\n\\n| Column 1 | Column 2 | Column 3 |\\n|----------|----------|----------|\\n| Data 1   | Data 2   | Data 3   |\\n| Data 4   | Data 5   | Data 6   |\\n\\n&#x27;\u003C/span>.repeat(\u003Cspan class=\"hljs-number\">50\u003C/span>)}\u003C/span>`\u003C/span>,\n            \n            \u003Cspan class=\"hljs-attr\">xlarge\u003C/span>: \u003Cspan class=\"hljs-string\">`# Extra Large Test Document\\n\\n\u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-string\">&#x27;## Major Section\\n\\n### Subsection\\n\\nExtensive content with **formatting**, *emphasis*, and \\`code\\`. Multiple paragraphs of text content.\\n\\n#### Code Examples\\n\\n```python\\ndef complex_algorithm(data, parameters):\\n    &quot;&quot;&quot;Complex algorithm implementation&quot;&quot;&quot;\\n    results = []\\n    for item in data:\\n        processed = process_item(item, parameters)\\n        if validate_result(processed):\\n            results.append(processed)\\n    return optimize_results(results)\\n\\ndef process_item(item, params):\\n    # Processing logic here\\n    return transformed_item\\n```\\n\\n#### Data Tables\\n\\n| ID | Name | Value | Status | Description |\\n|----|------|-------|--------|--------------|\\n| 1  | Item1| 100   | Active | First item  |\\n| 2  | Item2| 200   | Active | Second item |\\n| 3  | Item3| 300   | Inactive | Third item |\\n\\n&gt; Extended blockquote with multiple sentences and detailed explanations of concepts.\\n\\n&#x27;\u003C/span>.repeat(\u003Cspan class=\"hljs-number\">200\u003C/span>)}\u003C/span>`\u003C/span>\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> content = templates[category];\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> sizeKB = \u003Cspan class=\"hljs-title class_\">Buffer\u003C/span>.\u003Cspan class=\"hljs-title function_\">byteLength\u003C/span>(content, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>) / \u003Cspan class=\"hljs-number\">1024\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> { \n            content, \n            \u003Cspan class=\"hljs-attr\">size\u003C/span>: sizeKB, \n            \u003Cspan class=\"hljs-attr\">path\u003C/span>: \u003Cspan class=\"hljs-string\">`synthetic-\u003Cspan class=\"hljs-subst\">${category}\u003C/span>.md`\u003C/span> \n        };\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">benchmarkParser\u003C/span>(\u003Cspan class=\"hljs-params\">parserKey, parser, testContent\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> results = {\n            \u003Cspan class=\"hljs-attr\">parserName\u003C/span>: parser.\u003Cspan class=\"hljs-property\">name\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">categories\u003C/span>: {}\n        };\n        \n        \u003Cspan class=\"hljs-comment\">// Test each content category\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [category, contentList] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(testContent)) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (contentList.\u003Cspan class=\"hljs-property\">length\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) \u003Cspan class=\"hljs-keyword\">continue\u003C/span>;\n            \n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`  Testing \u003Cspan class=\"hljs-subst\">${category}\u003C/span> content (\u003Cspan class=\"hljs-subst\">${contentList.length}\u003C/span> files)...`\u003C/span>);\n            \n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> categoryResults = {\n                \u003Cspan class=\"hljs-attr\">avgTime\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">minTime\u003C/span>: \u003Cspan class=\"hljs-title class_\">Infinity\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">maxTime\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">throughput\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">memoryUsage\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">errors\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>\n            };\n            \n            \u003Cspan class=\"hljs-keyword\">let\u003C/span> totalTime = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n            \u003Cspan class=\"hljs-keyword\">let\u003C/span> processedFiles = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n            \n            \u003Cspan class=\"hljs-comment\">// Warmup runs\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = \u003Cspan class=\"hljs-number\">0\u003C/span>; i &lt; \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">warmupRuns\u003C/span> &amp;&amp; i &lt; contentList.\u003Cspan class=\"hljs-property\">length\u003C/span>; i++) {\n                \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                    \u003Cspan class=\"hljs-keyword\">await\u003C/span> parser.\u003Cspan class=\"hljs-title function_\">parse\u003C/span>(contentList[i].\u003Cspan class=\"hljs-property\">content\u003C/span>);\n                } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                    \u003Cspan class=\"hljs-comment\">// Ignore warmup errors\u003C/span>\n                }\n            }\n            \n            \u003Cspan class=\"hljs-comment\">// Actual benchmark runs\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> contentItem \u003Cspan class=\"hljs-keyword\">of\u003C/span> contentList) {\n                \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> startMemory = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>().\u003Cspan class=\"hljs-property\">heapUsed\u003C/span>;\n                    \n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> times = [];\n                    \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = \u003Cspan class=\"hljs-number\">0\u003C/span>; i &lt; \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">iterations\u003C/span>; i++) {\n                        \u003Cspan class=\"hljs-keyword\">const\u003C/span> startTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n                        \u003Cspan class=\"hljs-keyword\">await\u003C/span> parser.\u003Cspan class=\"hljs-title function_\">parse\u003C/span>(contentItem.\u003Cspan class=\"hljs-property\">content\u003C/span>);\n                        \u003Cspan class=\"hljs-keyword\">const\u003C/span> endTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n                        times.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(endTime - startTime);\n                    }\n                    \n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> endMemory = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>().\u003Cspan class=\"hljs-property\">heapUsed\u003C/span>;\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> memoryDelta = endMemory - startMemory;\n                    \n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> avgFileTime = times.\u003Cspan class=\"hljs-title function_\">reduce\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a + b) / times.\u003Cspan class=\"hljs-property\">length\u003C/span>;\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> minFileTime = \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">min\u003C/span>(...times);\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> maxFileTime = \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(...times);\n                    \n                    totalTime += avgFileTime;\n                    categoryResults.\u003Cspan class=\"hljs-property\">minTime\u003C/span> = \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">min\u003C/span>(categoryResults.\u003Cspan class=\"hljs-property\">minTime\u003C/span>, minFileTime);\n                    categoryResults.\u003Cspan class=\"hljs-property\">maxTime\u003C/span> = \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(categoryResults.\u003Cspan class=\"hljs-property\">maxTime\u003C/span>, maxFileTime);\n                    categoryResults.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span> += memoryDelta;\n                    \n                    processedFiles++;\n                    \n                } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                    categoryResults.\u003Cspan class=\"hljs-property\">errors\u003C/span>++;\n                    \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">`    Error processing file: \u003Cspan class=\"hljs-subst\">${error.message}\u003C/span>`\u003C/span>);\n                }\n            }\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (processedFiles &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n                categoryResults.\u003Cspan class=\"hljs-property\">avgTime\u003C/span> = totalTime / processedFiles;\n                categoryResults.\u003Cspan class=\"hljs-property\">throughput\u003C/span> = processedFiles / (totalTime / \u003Cspan class=\"hljs-number\">1000\u003C/span>); \u003Cspan class=\"hljs-comment\">// files per second\u003C/span>\n                categoryResults.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span> = categoryResults.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span> / processedFiles;\n            }\n            \n            results.\u003Cspan class=\"hljs-property\">categories\u003C/span>[category] = categoryResults;\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> results;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generatePerformanceReport\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> report = {\n            \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>().\u003Cspan class=\"hljs-title function_\">toISOString\u003C/span>(),\n            \u003Cspan class=\"hljs-attr\">summary\u003C/span>: {},\n            \u003Cspan class=\"hljs-attr\">detailed\u003C/span>: {},\n            \u003Cspan class=\"hljs-attr\">recommendations\u003C/span>: []\n        };\n        \n        \u003Cspan class=\"hljs-comment\">// Calculate summary statistics\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> parserSummaries = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Map\u003C/span>();\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [parserKey, results] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">benchmarkResults\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> summary = {\n                \u003Cspan class=\"hljs-attr\">parserName\u003C/span>: results.\u003Cspan class=\"hljs-property\">parserName\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">overallAvgTime\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">overallThroughput\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">overallMemoryUsage\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">totalErrors\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">categoryCount\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>\n            };\n            \n            \u003Cspan class=\"hljs-keyword\">let\u003C/span> totalTime = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n            \u003Cspan class=\"hljs-keyword\">let\u003C/span> totalThroughput = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n            \u003Cspan class=\"hljs-keyword\">let\u003C/span> totalMemory = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n            \n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [category, categoryResults] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(results.\u003Cspan class=\"hljs-property\">categories\u003C/span>)) {\n                totalTime += categoryResults.\u003Cspan class=\"hljs-property\">avgTime\u003C/span>;\n                totalThroughput += categoryResults.\u003Cspan class=\"hljs-property\">throughput\u003C/span>;\n                totalMemory += categoryResults.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span>;\n                summary.\u003Cspan class=\"hljs-property\">totalErrors\u003C/span> += categoryResults.\u003Cspan class=\"hljs-property\">errors\u003C/span>;\n                summary.\u003Cspan class=\"hljs-property\">categoryCount\u003C/span>++;\n            }\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (summary.\u003Cspan class=\"hljs-property\">categoryCount\u003C/span> &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n                summary.\u003Cspan class=\"hljs-property\">overallAvgTime\u003C/span> = totalTime / summary.\u003Cspan class=\"hljs-property\">categoryCount\u003C/span>;\n                summary.\u003Cspan class=\"hljs-property\">overallThroughput\u003C/span> = totalThroughput / summary.\u003Cspan class=\"hljs-property\">categoryCount\u003C/span>;\n                summary.\u003Cspan class=\"hljs-property\">overallMemoryUsage\u003C/span> = totalMemory / summary.\u003Cspan class=\"hljs-property\">categoryCount\u003C/span>;\n            }\n            \n            parserSummaries.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(parserKey, summary);\n            report.\u003Cspan class=\"hljs-property\">summary\u003C/span>[parserKey] = summary;\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Store detailed results\u003C/span>\n        report.\u003Cspan class=\"hljs-property\">detailed\u003C/span> = \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">fromEntries\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">benchmarkResults\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Generate recommendations\u003C/span>\n        report.\u003Cspan class=\"hljs-property\">recommendations\u003C/span> = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateRecommendations\u003C/span>(parserSummaries);\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> report;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateRecommendations\u003C/span>(\u003Cspan class=\"hljs-params\">parserSummaries\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> recommendations = [];\n        \n        \u003Cspan class=\"hljs-comment\">// Find fastest parser overall\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> fastestParser = \u003Cspan class=\"hljs-literal\">null\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> fastestTime = \u003Cspan class=\"hljs-title class_\">Infinity\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [parserKey, summary] \u003Cspan class=\"hljs-keyword\">of\u003C/span> parserSummaries) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (summary.\u003Cspan class=\"hljs-property\">overallAvgTime\u003C/span> &lt; fastestTime) {\n                fastestTime = summary.\u003Cspan class=\"hljs-property\">overallAvgTime\u003C/span>;\n                fastestParser = { \u003Cspan class=\"hljs-attr\">key\u003C/span>: parserKey, ...summary };\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (fastestParser) {\n            recommendations.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;parser-selection&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">priority\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;high&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">title\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Fastest Overall Parser&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${fastestParser.parserName}\u003C/span> showed the best overall performance`\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">details\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">avgTime\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${fastestParser.overallAvgTime.toFixed(\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span>ms`\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">throughput\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${fastestParser.overallThroughput.toFixed(\u003Cspan class=\"hljs-number\">1\u003C/span>)}\u003C/span> files/sec`\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">memoryUsage\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${(fastestParser.overallMemoryUsage / \u003Cspan class=\"hljs-number\">1024\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span>).toFixed(\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span>MB`\u003C/span>\n                }\n            });\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Find most memory efficient\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> mostEfficient = \u003Cspan class=\"hljs-literal\">null\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> lowestMemory = \u003Cspan class=\"hljs-title class_\">Infinity\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [parserKey, summary] \u003Cspan class=\"hljs-keyword\">of\u003C/span> parserSummaries) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (summary.\u003Cspan class=\"hljs-property\">overallMemoryUsage\u003C/span> &lt; lowestMemory) {\n                lowestMemory = summary.\u003Cspan class=\"hljs-property\">overallMemoryUsage\u003C/span>;\n                mostEfficient = { \u003Cspan class=\"hljs-attr\">key\u003C/span>: parserKey, ...summary };\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (mostEfficient &amp;&amp; mostEfficient.\u003Cspan class=\"hljs-property\">key\u003C/span> !== fastestParser?.\u003Cspan class=\"hljs-property\">key\u003C/span>) {\n            recommendations.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;memory-optimization&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">priority\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;medium&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">title\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Most Memory Efficient Parser&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${mostEfficient.parserName}\u003C/span> uses the least memory`\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">details\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">memoryUsage\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${(mostEfficient.overallMemoryUsage / \u003Cspan class=\"hljs-number\">1024\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span>).toFixed(\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span>MB`\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">avgTime\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${mostEfficient.overallAvgTime.toFixed(\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span>ms`\u003C/span>\n                }\n            });\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Check for parsers with errors\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [parserKey, summary] \u003Cspan class=\"hljs-keyword\">of\u003C/span> parserSummaries) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (summary.\u003Cspan class=\"hljs-property\">totalErrors\u003C/span> &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n                recommendations.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                    \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;reliability&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">priority\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;high&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">title\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Parser Reliability Issues&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${summary.parserName}\u003C/span> had \u003Cspan class=\"hljs-subst\">${summary.totalErrors}\u003C/span> parsing errors`\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">action\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Consider switching to a more reliable parser or investigating error causes&#x27;\u003C/span>\n                });\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Performance optimization suggestions\u003C/span>\n        recommendations.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n            \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;caching&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">priority\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;medium&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">title\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Implement Caching&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Add result caching to avoid re-parsing unchanged content&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">implementation\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Use file modification time or content hashes to cache parsed results&#x27;\u003C/span>\n        });\n        \n        recommendations.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n            \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;batch-processing&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">priority\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;low&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">title\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Batch Processing&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Process multiple files in parallel for better throughput&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">implementation\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Use worker threads or child processes for CPU-intensive parsing&#x27;\u003C/span>\n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> recommendations;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">saveReport\u003C/span>(\u003Cspan class=\"hljs-params\">report, outputPath = \u003Cspan class=\"hljs-string\">&#x27;markdown-performance-report.json&#x27;\u003C/span>\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(outputPath, \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">stringify\u003C/span>(report, \u003Cspan class=\"hljs-literal\">null\u003C/span>, \u003Cspan class=\"hljs-number\">2\u003C/span>));\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Performance report saved to \u003Cspan class=\"hljs-subst\">${outputPath}\u003C/span>`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Also generate a human-readable summary\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> summaryPath = outputPath.\u003Cspan class=\"hljs-title function_\">replace\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;.json&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;-summary.md&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> summaryContent = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateMarkdownSummary\u003C/span>(report);\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(summaryPath, summaryContent);\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Performance summary saved to \u003Cspan class=\"hljs-subst\">${summaryPath}\u003C/span>`\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateMarkdownSummary\u003C/span>(\u003Cspan class=\"hljs-params\">report\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> summary = [\n            \u003Cspan class=\"hljs-string\">&#x27;# Markdown Parser Performance Report&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-string\">`\\nGenerated: \u003Cspan class=\"hljs-subst\">${report.timestamp}\u003C/span>`\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;\\n## Summary Results&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>\n        ];\n        \n        \u003Cspan class=\"hljs-comment\">// Create comparison table\u003C/span>\n        summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;| Parser | Avg Time (ms) | Throughput (files/sec) | Memory Usage (MB) | Errors |&#x27;\u003C/span>);\n        summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;|--------|---------------|------------------------|-------------------|---------|&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [parserKey, parserSummary] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(report.\u003Cspan class=\"hljs-property\">summary\u003C/span>)) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> memoryMB = (parserSummary.\u003Cspan class=\"hljs-property\">overallMemoryUsage\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span>).\u003Cspan class=\"hljs-title function_\">toFixed\u003C/span>(\u003Cspan class=\"hljs-number\">2\u003C/span>);\n            summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">`| \u003Cspan class=\"hljs-subst\">${parserSummary.parserName}\u003C/span> | \u003Cspan class=\"hljs-subst\">${parserSummary.overallAvgTime.toFixed(\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span> | \u003Cspan class=\"hljs-subst\">${parserSummary.overallThroughput.toFixed(\u003Cspan class=\"hljs-number\">1\u003C/span>)}\u003C/span> | \u003Cspan class=\"hljs-subst\">${memoryMB}\u003C/span> | \u003Cspan class=\"hljs-subst\">${parserSummary.totalErrors}\u003C/span> |`\u003C/span>);\n        }\n        \n        summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;\\n## Recommendations\\n&#x27;\u003C/span>);\n        \n        report.\u003Cspan class=\"hljs-property\">recommendations\u003C/span>.\u003Cspan class=\"hljs-title function_\">forEach\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">rec, index\u003C/span>) =&gt;\u003C/span> {\n            summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">`### \u003Cspan class=\"hljs-subst\">${index + \u003Cspan class=\"hljs-number\">1\u003C/span>}\u003C/span>. \u003Cspan class=\"hljs-subst\">${rec.title}\u003C/span>`\u003C/span>);\n            summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">`**Priority:** \u003Cspan class=\"hljs-subst\">${rec.priority}\u003C/span>`\u003C/span>);\n            summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">`\\n\u003Cspan class=\"hljs-subst\">${rec.description}\u003C/span>\\n`\u003C/span>);\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (rec.\u003Cspan class=\"hljs-property\">details\u003C/span>) {\n                summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;**Details:**&#x27;\u003C/span>);\n                \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(rec.\u003Cspan class=\"hljs-property\">details\u003C/span>).\u003Cspan class=\"hljs-title function_\">forEach\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">[key, value]\u003C/span>) =&gt;\u003C/span> {\n                    summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">`- \u003Cspan class=\"hljs-subst\">${key}\u003C/span>: \u003Cspan class=\"hljs-subst\">${value}\u003C/span>`\u003C/span>);\n                });\n                summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>);\n            }\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (rec.\u003Cspan class=\"hljs-property\">implementation\u003C/span>) {\n                summary.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(\u003Cspan class=\"hljs-string\">`**Implementation:** \u003Cspan class=\"hljs-subst\">${rec.implementation}\u003C/span>\\n`\u003C/span>);\n            }\n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> summary.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;\\n&#x27;\u003C/span>);\n    }\n}\n\n\u003Cspan class=\"hljs-variable language_\">module\u003C/span>.\u003Cspan class=\"hljs-property\">exports\u003C/span> = \u003Cspan class=\"hljs-title class_\">MarkdownPerformanceAnalyzer\u003C/span>;\n\n\u003Cspan class=\"hljs-comment\">// CLI usage example\u003C/span>\n\u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-built_in\">require\u003C/span>.\u003Cspan class=\"hljs-property\">main\u003C/span> === \u003Cspan class=\"hljs-variable language_\">module\u003C/span>) {\n    \u003Cspan class=\"hljs-keyword\">const\u003C/span> analyzer = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">MarkdownPerformanceAnalyzer\u003C/span>({\n        \u003Cspan class=\"hljs-attr\">iterations\u003C/span>: \u003Cspan class=\"hljs-number\">50\u003C/span>,\n        \u003Cspan class=\"hljs-attr\">warmupRuns\u003C/span>: \u003Cspan class=\"hljs-number\">5\u003C/span>\n    });\n    \n    \u003Cspan class=\"hljs-keyword\">const\u003C/span> contentDir = process.\u003Cspan class=\"hljs-property\">argv\u003C/span>[\u003Cspan class=\"hljs-number\">2\u003C/span>] || \u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span>;\n    \n    analyzer.\u003Cspan class=\"hljs-title function_\">analyzePerformance\u003C/span>(contentDir)\n        .\u003Cspan class=\"hljs-title function_\">then\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">report\u003C/span> =&gt;\u003C/span> {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;\\n=== Performance Analysis Complete ===&#x27;\u003C/span>);\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Analyzed \u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-built_in\">Object\u003C/span>.keys(report.summary).length}\u003C/span> parsers`\u003C/span>);\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Generated \u003Cspan class=\"hljs-subst\">${report.recommendations.length}\u003C/span> recommendations`\u003C/span>);\n            \n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> analyzer.\u003Cspan class=\"hljs-title function_\">saveReport\u003C/span>(report);\n        })\n        .\u003Cspan class=\"hljs-title function_\">catch\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">error\u003C/span> =&gt;\u003C/span> {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">error\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Performance analysis failed:&#x27;\u003C/span>, error);\n            process.\u003Cspan class=\"hljs-title function_\">exit\u003C/span>(\u003Cspan class=\"hljs-number\">1\u003C/span>);\n        });\n}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"advanced-caching-strategies\">Advanced Caching Strategies\u003C/h3>\n\u003Cp>Implementing sophisticated caching mechanisms for optimal performance:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// markdown-cache-system.js - High-performance caching system\u003C/span>\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> crypto = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;crypto&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> fs = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;fs&#x27;\u003C/span>).\u003Cspan class=\"hljs-property\">promises\u003C/span>;\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> path = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;path&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> \u003Cspan class=\"hljs-variable constant_\">LRU\u003C/span> = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;lru-cache&#x27;\u003C/span>);\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">AdvancedMarkdownCache\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">memoryLimit\u003C/span>: options.\u003Cspan class=\"hljs-property\">memoryLimit\u003C/span> || \u003Cspan class=\"hljs-number\">100\u003C/span> * \u003Cspan class=\"hljs-number\">1024\u003C/span> * \u003Cspan class=\"hljs-number\">1024\u003C/span>, \u003Cspan class=\"hljs-comment\">// 100MB\u003C/span>\n            \u003Cspan class=\"hljs-attr\">diskCacheDir\u003C/span>: options.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;.cache/markdown&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">ttl\u003C/span>: options.\u003Cspan class=\"hljs-property\">ttl\u003C/span> || \u003Cspan class=\"hljs-number\">3600000\u003C/span>, \u003Cspan class=\"hljs-comment\">// 1 hour\u003C/span>\n            \u003Cspan class=\"hljs-attr\">maxItems\u003C/span>: options.\u003Cspan class=\"hljs-property\">maxItems\u003C/span> || \u003Cspan class=\"hljs-number\">1000\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">compressionEnabled\u003C/span>: options.\u003Cspan class=\"hljs-property\">compressionEnabled\u003C/span> !== \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">persistentCache\u003C/span>: options.\u003Cspan class=\"hljs-property\">persistentCache\u003C/span> !== \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n            ...options\n        };\n        \n        \u003Cspan class=\"hljs-comment\">// Multi-tier cache system\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title function_\">LRU\u003C/span>({\n            \u003Cspan class=\"hljs-attr\">max\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">maxItems\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">maxSize\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">memoryLimit\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">sizeCalculation\u003C/span>: \u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">value\u003C/span>) =&gt;\u003C/span> \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">stringify\u003C/span>(value).\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">ttl\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">ttl\u003C/span>\n        });\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Map\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">pendingWrites\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Map\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">hits\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">misses\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">diskHits\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">memoryHits\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">writes\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">evictions\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">initializeDiskCache\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">initializeDiskCache\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">persistentCache\u003C/span>) \u003Cspan class=\"hljs-keyword\">return\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">mkdir\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, { \u003Cspan class=\"hljs-attr\">recursive\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span> });\n            \n            \u003Cspan class=\"hljs-comment\">// Load existing cache index\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> indexPath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;cache-index.json&#x27;\u003C/span>);\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> indexData = \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readFile\u003C/span>(indexPath, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>);\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> index = \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">parse\u003C/span>(indexData);\n                \n                \u003Cspan class=\"hljs-comment\">// Validate cache entries and clean up stale ones\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">validateCacheIndex\u003C/span>(index);\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> {\n                \u003Cspan class=\"hljs-comment\">// Index doesn&#x27;t exist or is corrupted, start fresh\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">saveCacheIndex\u003C/span>({});\n            }\n        } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Failed to initialize disk cache:&#x27;\u003C/span>, error.\u003Cspan class=\"hljs-property\">message\u003C/span>);\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">persistentCache\u003C/span> = \u003Cspan class=\"hljs-literal\">false\u003C/span>;\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">validateCacheIndex\u003C/span>(\u003Cspan class=\"hljs-params\">index\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> validEntries = {};\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> now = \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [key, entry] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(index)) {\n            \u003Cspan class=\"hljs-comment\">// Check if entry is still valid\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (entry.\u003Cspan class=\"hljs-property\">expires\u003C/span> &gt; now) {\n                \u003Cspan class=\"hljs-comment\">// Check if file still exists\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> cachePath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, entry.\u003Cspan class=\"hljs-property\">filename\u003C/span>);\n                \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                    \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">access\u003C/span>(cachePath);\n                    validEntries[key] = entry;\n                } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> {\n                    \u003Cspan class=\"hljs-comment\">// File doesn&#x27;t exist, skip entry\u003C/span>\n                }\n            }\n        }\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Map\u003C/span>(\u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(validEntries));\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">saveCacheIndex\u003C/span>(validEntries);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateCacheKey\u003C/span>(\u003Cspan class=\"hljs-params\">content, options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> hash = crypto.\u003Cspan class=\"hljs-title function_\">createHash\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;sha256&#x27;\u003C/span>);\n        hash.\u003Cspan class=\"hljs-title function_\">update\u003C/span>(content);\n        hash.\u003Cspan class=\"hljs-title function_\">update\u003C/span>(\u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">stringify\u003C/span>(options)); \u003Cspan class=\"hljs-comment\">// Include parser options\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> hash.\u003Cspan class=\"hljs-title function_\">digest\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;hex&#x27;\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">get\u003C/span>(\u003Cspan class=\"hljs-params\">key\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Try memory cache first\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> memoryResult = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">get\u003C/span>(key);\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (memoryResult) {\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">hits\u003C/span>++;\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">memoryHits\u003C/span>++;\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> memoryResult;\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Try disk cache\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">persistentCache\u003C/span> &amp;&amp; \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">has\u003C/span>(key)) {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> cacheEntry = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">get\u003C/span>(key);\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> cachePath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, cacheEntry.\u003Cspan class=\"hljs-property\">filename\u003C/span>);\n                \n                \u003Cspan class=\"hljs-keyword\">let\u003C/span> data = \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readFile\u003C/span>(cachePath, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>);\n                \n                \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">compressionEnabled\u003C/span>) {\n                    data = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">decompress\u003C/span>(data);\n                }\n                \n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> result = \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">parse\u003C/span>(data);\n                \n                \u003Cspan class=\"hljs-comment\">// Promote to memory cache\u003C/span>\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(key, result);\n                \n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">hits\u003C/span>++;\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">diskHits\u003C/span>++;\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> result;\n                \n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">`Disk cache read failed for key \u003Cspan class=\"hljs-subst\">${key}\u003C/span>:`\u003C/span>, error.\u003Cspan class=\"hljs-property\">message\u003C/span>);\n                \u003Cspan class=\"hljs-comment\">// Remove invalid entry\u003C/span>\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">delete\u003C/span>(key);\n            }\n        }\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">misses\u003C/span>++;\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">null\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">set\u003C/span>(\u003Cspan class=\"hljs-params\">key, value, metadata = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Store in memory cache\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(key, value);\n        \n        \u003Cspan class=\"hljs-comment\">// Store in disk cache if enabled\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">persistentCache\u003C/span>) {\n            \u003Cspan class=\"hljs-comment\">// Don&#x27;t block on disk write\u003C/span>\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">writeToDiskCache\u003C/span>(key, value, metadata).\u003Cspan class=\"hljs-title function_\">catch\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">error\u003C/span> =&gt;\u003C/span> {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">`Disk cache write failed for key \u003Cspan class=\"hljs-subst\">${key}\u003C/span>:`\u003C/span>, error.\u003Cspan class=\"hljs-property\">message\u003C/span>);\n            });\n        }\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">writes\u003C/span>++;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">writeToDiskCache\u003C/span>(\u003Cspan class=\"hljs-params\">key, value, metadata\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Prevent concurrent writes to the same key\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">pendingWrites\u003C/span>.\u003Cspan class=\"hljs-title function_\">has\u003C/span>(key)) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">pendingWrites\u003C/span>.\u003Cspan class=\"hljs-title function_\">get\u003C/span>(key);\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> writePromise = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">performDiskWrite\u003C/span>(key, value, metadata);\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">pendingWrites\u003C/span>.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(key, writePromise);\n        \n        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> writePromise;\n        } \u003Cspan class=\"hljs-keyword\">finally\u003C/span> {\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">pendingWrites\u003C/span>.\u003Cspan class=\"hljs-title function_\">delete\u003C/span>(key);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">performDiskWrite\u003C/span>(\u003Cspan class=\"hljs-params\">key, value, metadata\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> filename = \u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${key}\u003C/span>.cache`\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> cachePath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, filename);\n        \n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> data = \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">stringify\u003C/span>(value);\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">compressionEnabled\u003C/span>) {\n            data = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">compress\u003C/span>(data);\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(cachePath, data);\n        \n        \u003Cspan class=\"hljs-comment\">// Update cache index\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> cacheEntry = {\n            filename,\n            \u003Cspan class=\"hljs-attr\">created\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n            \u003Cspan class=\"hljs-attr\">expires\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>() + \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">ttl\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">size\u003C/span>: data.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            ...metadata\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(key, cacheEntry);\n        \n        \u003Cspan class=\"hljs-comment\">// Periodically update the index file\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-property\">size\u003C/span> % \u003Cspan class=\"hljs-number\">10\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">saveCacheIndex\u003C/span>(\u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">fromEntries\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>));\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">compress\u003C/span>(\u003Cspan class=\"hljs-params\">data\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Simple gzip compression simulation\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// In real implementation, use zlib.gzip\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-title class_\">Buffer\u003C/span>.\u003Cspan class=\"hljs-title function_\">from\u003C/span>(data).\u003Cspan class=\"hljs-title function_\">toString\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;base64&#x27;\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">decompress\u003C/span>(\u003Cspan class=\"hljs-params\">data\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Simple gzip decompression simulation\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// In real implementation, use zlib.gunzip\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-title class_\">Buffer\u003C/span>.\u003Cspan class=\"hljs-title function_\">from\u003C/span>(data, \u003Cspan class=\"hljs-string\">&#x27;base64&#x27;\u003C/span>).\u003Cspan class=\"hljs-title function_\">toString\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">saveCacheIndex\u003C/span>(\u003Cspan class=\"hljs-params\">index\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> indexPath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;cache-index.json&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(indexPath, \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">stringify\u003C/span>(index, \u003Cspan class=\"hljs-literal\">null\u003C/span>, \u003Cspan class=\"hljs-number\">2\u003C/span>));\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">clear\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">clear\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">clear\u003C/span>();\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">persistentCache\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> files = \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readdir\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>);\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> deletePromises = files.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">file\u003C/span> =&gt;\u003C/span> \n                    fs.\u003Cspan class=\"hljs-title function_\">unlink\u003C/span>(path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, file))\n                );\n                \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title class_\">Promise\u003C/span>.\u003Cspan class=\"hljs-title function_\">all\u003C/span>(deletePromises);\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Failed to clear disk cache:&#x27;\u003C/span>, error.\u003Cspan class=\"hljs-property\">message\u003C/span>);\n            }\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">getStats\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> hitRate = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">hits\u003C/span> / (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">hits\u003C/span> + \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">misses\u003C/span>) * \u003Cspan class=\"hljs-number\">100\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            ...\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">hitRate\u003C/span>: hitRate.\u003Cspan class=\"hljs-title function_\">toFixed\u003C/span>(\u003Cspan class=\"hljs-number\">2\u003C/span>) + \u003Cspan class=\"hljs-string\">&#x27;%&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">memorySize\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-property\">calculatedSize\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">diskSize\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-property\">size\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">memoryItems\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-property\">size\u003C/span>\n        };\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">cleanup\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Clean up expired entries\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> now = \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> toDelete = [];\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [key, entry] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (entry.\u003Cspan class=\"hljs-property\">expires\u003C/span> &lt;= now) {\n                toDelete.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(key);\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> key \u003Cspan class=\"hljs-keyword\">of\u003C/span> toDelete) {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">delete\u003C/span>(key);\n        }\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cacheStats\u003C/span>.\u003Cspan class=\"hljs-property\">evictions\u003C/span> += toDelete.\u003Cspan class=\"hljs-property\">length\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">delete\u003C/span>(\u003Cspan class=\"hljs-params\">key\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">memoryCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">delete\u003C/span>(key);\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">has\u003C/span>(key)) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> entry = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">get\u003C/span>(key);\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> cachePath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">diskCacheDir\u003C/span>, entry.\u003Cspan class=\"hljs-property\">filename\u003C/span>);\n            \n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">unlink\u003C/span>(cachePath);\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> {\n                \u003Cspan class=\"hljs-comment\">// File might already be deleted\u003C/span>\n            }\n            \n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">diskCache\u003C/span>.\u003Cspan class=\"hljs-title function_\">delete\u003C/span>(key);\n        }\n    }\n}\n\n\u003Cspan class=\"hljs-comment\">// High-performance cached markdown processor\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">CachedMarkdownProcessor\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">parser, cacheOptions = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span> = parser;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">AdvancedMarkdownCache\u003C/span>(cacheOptions);\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">cached\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">processed\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">totalTime\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>\n        };\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">process\u003C/span>(\u003Cspan class=\"hljs-params\">content, options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> startTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n        \n        \u003Cspan class=\"hljs-comment\">// Generate cache key\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> cacheKey = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateCacheKey\u003C/span>(content, options);\n        \n        \u003Cspan class=\"hljs-comment\">// Try to get from cache\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> cached = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">get\u003C/span>(cacheKey);\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (cached) {\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span>.\u003Cspan class=\"hljs-property\">cached\u003C/span>++;\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n                \u003Cspan class=\"hljs-attr\">html\u003C/span>: cached.\u003Cspan class=\"hljs-property\">html\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">fromCache\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">processingTime\u003C/span>: performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>() - startTime\n            };\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Process with parser\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> html = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span>.\u003Cspan class=\"hljs-title function_\">parse\u003C/span>(content, options);\n        \n        \u003Cspan class=\"hljs-comment\">// Cache the result\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">set\u003C/span>(cacheKey, { \n            html, \n            \u003Cspan class=\"hljs-attr\">processedAt\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>() \n        }, {\n            \u003Cspan class=\"hljs-attr\">contentLength\u003C/span>: content.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">htmlLength\u003C/span>: html.\u003Cspan class=\"hljs-property\">length\u003C/span>\n        });\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> processingTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>() - startTime;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span>.\u003Cspan class=\"hljs-property\">processed\u003C/span>++;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span>.\u003Cspan class=\"hljs-property\">totalTime\u003C/span> += processingTime;\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            html,\n            \u003Cspan class=\"hljs-attr\">fromCache\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n            processingTime\n        };\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">getStats\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> cacheStats = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">getStats\u003C/span>();\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> avgProcessingTime = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span>.\u003Cspan class=\"hljs-property\">totalTime\u003C/span> / \n            \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span>.\u003Cspan class=\"hljs-property\">processed\u003C/span>, \u003Cspan class=\"hljs-number\">1\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">cache\u003C/span>: cacheStats,\n            \u003Cspan class=\"hljs-attr\">processing\u003C/span>: {\n                ...\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingStats\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">avgProcessingTime\u003C/span>: avgProcessingTime.\u003Cspan class=\"hljs-title function_\">toFixed\u003C/span>(\u003Cspan class=\"hljs-number\">2\u003C/span>) + \u003Cspan class=\"hljs-string\">&#x27;ms&#x27;\u003C/span>\n            }\n        };\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">cleanup\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">cleanup\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">clearCache\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">clear\u003C/span>();\n    }\n}\n\n\u003Cspan class=\"hljs-variable language_\">module\u003C/span>.\u003Cspan class=\"hljs-property\">exports\u003C/span> = { \u003Cspan class=\"hljs-title class_\">AdvancedMarkdownCache\u003C/span>, \u003Cspan class=\"hljs-title class_\">CachedMarkdownProcessor\u003C/span> };\n\u003C/code>\u003C/pre>\u003Ch2 id=\"parser-optimization-techniques\">Parser Optimization Techniques\u003C/h2>\n\u003Ch3 id=\"custom-parser-configuration\">Custom Parser Configuration\u003C/h3>\n\u003Cp>Optimizing parser settings for specific use cases:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// parser-optimizer.js - Optimized parser configurations\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MarkdownParserOptimizer\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">optimizedConfigs\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">speed\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Speed Optimized&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Fastest processing with minimal features&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">config\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">headerIds\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">tables\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">breaks\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">linkify\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">typographer\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">highlight\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>\n                }\n            },\n            \n            \u003Cspan class=\"hljs-attr\">balanced\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Balanced Performance&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Good performance with essential features&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">config\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">headerIds\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">tables\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">breaks\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">linkify\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">typographer\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">highlight\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>\n                }\n            },\n            \n            \u003Cspan class=\"hljs-attr\">full\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Full Features&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;All features enabled (slower)&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">config\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">headerIds\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">tables\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">breaks\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">linkify\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">typographer\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">highlight\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>\n                }\n            }\n        };\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">createOptimizedParser\u003C/span>(\u003Cspan class=\"hljs-params\">type = \u003Cspan class=\"hljs-string\">&#x27;balanced&#x27;\u003C/span>\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> config = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">optimizedConfigs\u003C/span>[type];\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!config) {\n            \u003Cspan class=\"hljs-keyword\">throw\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Error\u003C/span>(\u003Cspan class=\"hljs-string\">`Unknown optimization type: \u003Cspan class=\"hljs-subst\">${type}\u003C/span>`\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Configure different parsers based on type\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">configureMarkdownIt\u003C/span>(config.\u003Cspan class=\"hljs-property\">config\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">configureMarkdownIt\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> markdownIt = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;markdown-it&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> md = \u003Cspan class=\"hljs-title function_\">markdownIt\u003C/span>({\n            \u003Cspan class=\"hljs-attr\">html\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">xhtmlOut\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">breaks\u003C/span>: config.\u003Cspan class=\"hljs-property\">breaks\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">langPrefix\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;language-&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">linkify\u003C/span>: config.\u003Cspan class=\"hljs-property\">linkify\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">typographer\u003C/span>: config.\u003Cspan class=\"hljs-property\">typographer\u003C/span>\n        });\n        \n        \u003Cspan class=\"hljs-comment\">// Conditionally enable plugins\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (config.\u003Cspan class=\"hljs-property\">tables\u003C/span>) {\n            \u003Cspan class=\"hljs-comment\">// Tables plugin is built-in\u003C/span>\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (config.\u003Cspan class=\"hljs-property\">headerIds\u003C/span>) {\n            md.\u003Cspan class=\"hljs-title function_\">use\u003C/span>(\u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;markdown-it-anchor&#x27;\u003C/span>), {\n                \u003Cspan class=\"hljs-attr\">permalink\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">permalinkBefore\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">permalinkSymbol\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>\n            });\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (config.\u003Cspan class=\"hljs-property\">highlight\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> hljs = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;highlight.js&#x27;\u003C/span>);\n            md.\u003Cspan class=\"hljs-title function_\">set\u003C/span>({\n                \u003Cspan class=\"hljs-attr\">highlight\u003C/span>: \u003Cspan class=\"hljs-keyword\">function\u003C/span> (\u003Cspan class=\"hljs-params\">str, lang\u003C/span>) {\n                    \u003Cspan class=\"hljs-keyword\">if\u003C/span> (lang &amp;&amp; hljs.\u003Cspan class=\"hljs-title function_\">getLanguage\u003C/span>(lang)) {\n                        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                            \u003Cspan class=\"hljs-keyword\">return\u003C/span> hljs.\u003Cspan class=\"hljs-title function_\">highlight\u003C/span>(str, { \u003Cspan class=\"hljs-attr\">language\u003C/span>: lang }).\u003Cspan class=\"hljs-property\">value\u003C/span>;\n                        } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (__) {}\n                    }\n                    \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>; \u003Cspan class=\"hljs-comment\">// use external default escaping\u003C/span>\n                }\n            });\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> md;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">benchmarkConfigurations\u003C/span>(\u003Cspan class=\"hljs-params\">testContent\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> results = {};\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [type, config] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">optimizedConfigs\u003C/span>)) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Benchmarking \u003Cspan class=\"hljs-subst\">${config.name}\u003C/span>...`\u003C/span>);\n            \n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> parser = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">createOptimizedParser\u003C/span>(type);\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> times = [];\n            \n            \u003Cspan class=\"hljs-comment\">// Warmup\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = \u003Cspan class=\"hljs-number\">0\u003C/span>; i &lt; \u003Cspan class=\"hljs-number\">5\u003C/span>; i++) {\n                parser.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(testContent);\n            }\n            \n            \u003Cspan class=\"hljs-comment\">// Benchmark\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = \u003Cspan class=\"hljs-number\">0\u003C/span>; i &lt; \u003Cspan class=\"hljs-number\">100\u003C/span>; i++) {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> start = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n                parser.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(testContent);\n                times.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>() - start);\n            }\n            \n            results[type] = {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: config.\u003Cspan class=\"hljs-property\">name\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">avgTime\u003C/span>: times.\u003Cspan class=\"hljs-title function_\">reduce\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a + b) / times.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">minTime\u003C/span>: \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">min\u003C/span>(...times),\n                \u003Cspan class=\"hljs-attr\">maxTime\u003C/span>: \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(...times),\n                \u003Cspan class=\"hljs-attr\">config\u003C/span>: config.\u003Cspan class=\"hljs-property\">config\u003C/span>\n            };\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> results;\n    }\n}\n\n\u003Cspan class=\"hljs-comment\">// Streaming parser for large documents\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">StreamingMarkdownProcessor\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">parser, options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span> = parser;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span> = options.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span> || \u003Cspan class=\"hljs-number\">64\u003C/span> * \u003Cspan class=\"hljs-number\">1024\u003C/span>; \u003Cspan class=\"hljs-comment\">// 64KB chunks\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">overlap\u003C/span> = options.\u003Cspan class=\"hljs-property\">overlap\u003C/span> || \u003Cspan class=\"hljs-number\">1024\u003C/span>; \u003Cspan class=\"hljs-comment\">// 1KB overlap\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processingQueue\u003C/span> = [];\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">isProcessing\u003C/span> = \u003Cspan class=\"hljs-literal\">false\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">processLargeDocument\u003C/span>(\u003Cspan class=\"hljs-params\">content\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (content.\u003Cspan class=\"hljs-property\">length\u003C/span> &lt;= \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span>.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(content);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Split into chunks with overlap\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunks = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">createChunks\u003C/span>(content);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> processedChunks = [];\n        \n        \u003Cspan class=\"hljs-comment\">// Process chunks in parallel\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunkPromises = chunks.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-keyword\">async\u003C/span> (chunk, index) =&gt; {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> html = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span>.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(chunk.\u003Cspan class=\"hljs-property\">content\u003C/span>);\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> { index, html, \u003Cspan class=\"hljs-attr\">boundaries\u003C/span>: chunk.\u003Cspan class=\"hljs-property\">boundaries\u003C/span> };\n        });\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> results = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title class_\">Promise\u003C/span>.\u003Cspan class=\"hljs-title function_\">all\u003C/span>(chunkPromises);\n        \n        \u003Cspan class=\"hljs-comment\">// Reassemble chunks, handling overlaps\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">reassembleChunks\u003C/span>(results);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">createChunks\u003C/span>(\u003Cspan class=\"hljs-params\">content\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunks = [];\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> position = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> chunkIndex = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">while\u003C/span> (position &lt; content.\u003Cspan class=\"hljs-property\">length\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunkEnd = \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">min\u003C/span>(position + \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span>, content.\u003Cspan class=\"hljs-property\">length\u003C/span>);\n            \u003Cspan class=\"hljs-keyword\">let\u003C/span> actualEnd = chunkEnd;\n            \n            \u003Cspan class=\"hljs-comment\">// Don&#x27;t split in the middle of words or markdown structures\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (chunkEnd &lt; content.\u003Cspan class=\"hljs-property\">length\u003C/span>) {\n                \u003Cspan class=\"hljs-comment\">// Find a good break point\u003C/span>\n                actualEnd = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">findBreakPoint\u003C/span>(content, chunkEnd);\n            }\n            \n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunkContent = content.\u003Cspan class=\"hljs-title function_\">slice\u003C/span>(position, actualEnd + \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">overlap\u003C/span>);\n            \n            chunks.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                \u003Cspan class=\"hljs-attr\">index\u003C/span>: chunkIndex++,\n                \u003Cspan class=\"hljs-attr\">content\u003C/span>: chunkContent,\n                \u003Cspan class=\"hljs-attr\">boundaries\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">start\u003C/span>: position,\n                    \u003Cspan class=\"hljs-attr\">end\u003C/span>: actualEnd,\n                    \u003Cspan class=\"hljs-attr\">hasOverlap\u003C/span>: actualEnd + \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">overlap\u003C/span> &lt; content.\u003Cspan class=\"hljs-property\">length\u003C/span>\n                }\n            });\n            \n            position = actualEnd;\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> chunks;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">findBreakPoint\u003C/span>(\u003Cspan class=\"hljs-params\">content, position\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Try to find a paragraph break\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = position; i &gt; position - \u003Cspan class=\"hljs-number\">200\u003C/span> &amp;&amp; i &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>; i--) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (content.\u003Cspan class=\"hljs-title function_\">slice\u003C/span>(i, i + \u003Cspan class=\"hljs-number\">2\u003C/span>) === \u003Cspan class=\"hljs-string\">&#x27;\\n\\n&#x27;\u003C/span>) {\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> i + \u003Cspan class=\"hljs-number\">2\u003C/span>;\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Try to find a sentence break\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = position; i &gt; position - \u003Cspan class=\"hljs-number\">100\u003C/span> &amp;&amp; i &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>; i--) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (content[i] === \u003Cspan class=\"hljs-string\">&#x27;.&#x27;\u003C/span> &amp;&amp; content[i + \u003Cspan class=\"hljs-number\">1\u003C/span>] === \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>) {\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> i + \u003Cspan class=\"hljs-number\">1\u003C/span>;\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Fall back to word boundary\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = position; i &gt; position - \u003Cspan class=\"hljs-number\">50\u003C/span> &amp;&amp; i &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>; i--) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (content[i] === \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>) {\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> i;\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> position;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">reassembleChunks\u003C/span>(\u003Cspan class=\"hljs-params\">processedChunks\u003C/span>) {\n        processedChunks.\u003Cspan class=\"hljs-title function_\">sort\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a.\u003Cspan class=\"hljs-property\">index\u003C/span> - b.\u003Cspan class=\"hljs-property\">index\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> result = \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = \u003Cspan class=\"hljs-number\">0\u003C/span>; i &lt; processedChunks.\u003Cspan class=\"hljs-property\">length\u003C/span>; i++) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunk = processedChunks[i];\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (i === \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n                result += chunk.\u003Cspan class=\"hljs-property\">html\u003C/span>;\n            } \u003Cspan class=\"hljs-keyword\">else\u003C/span> {\n                \u003Cspan class=\"hljs-comment\">// Remove overlap content from subsequent chunks\u003C/span>\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> cleanedHtml = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">removeOverlap\u003C/span>(chunk.\u003Cspan class=\"hljs-property\">html\u003C/span>);\n                result += cleanedHtml;\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> result;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">removeOverlap\u003C/span>(\u003Cspan class=\"hljs-params\">html\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Simplified overlap removal\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// In a real implementation, this would be more sophisticated\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> html;\n    }\n}\n\n\u003Cspan class=\"hljs-variable language_\">module\u003C/span>.\u003Cspan class=\"hljs-property\">exports\u003C/span> = { \u003Cspan class=\"hljs-title class_\">MarkdownParserOptimizer\u003C/span>, \u003Cspan class=\"hljs-title class_\">StreamingMarkdownProcessor\u003C/span> };\n\u003C/code>\u003C/pre>\u003Ch3 id=\"build-process-optimization\">Build Process Optimization\u003C/h3>\n\u003Cp>Optimizing static site generation and build processes:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># .github/workflows/optimized-build.yml - Optimized build pipeline\u003C/span>\n\u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">High-Performance\u003C/span> \u003Cspan class=\"hljs-string\">Documentation\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">on:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">push:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">branches:\u003C/span> [ \u003Cspan class=\"hljs-string\">main\u003C/span>, \u003Cspan class=\"hljs-string\">develop\u003C/span> ]\n    \u003Cspan class=\"hljs-attr\">paths:\u003C/span> [\u003Cspan class=\"hljs-string\">&#x27;content/**&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;assets/**&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;*.md&#x27;\u003C/span>]\n  \u003Cspan class=\"hljs-attr\">pull_request:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">branches:\u003C/span> [ \u003Cspan class=\"hljs-string\">main\u003C/span>, \u003Cspan class=\"hljs-string\">develop\u003C/span> ]\n\n\u003Cspan class=\"hljs-attr\">env:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">NODE_VERSION:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;18&#x27;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">CACHE_VERSION:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;v1&#x27;\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">jobs:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">build-optimized:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Checkout\u003C/span> \u003Cspan class=\"hljs-string\">repository\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">fetch-depth:\u003C/span> \u003Cspan class=\"hljs-number\">1\u003C/span>  \u003Cspan class=\"hljs-comment\"># Shallow clone for faster checkout\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Node.js\u003C/span> \u003Cspan class=\"hljs-string\">with\u003C/span> \u003Cspan class=\"hljs-string\">caching\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/setup-node@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">node-version:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">env.NODE_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">cache:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;npm&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-attr\">cache-dependency-path:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;**/package-lock.json&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Configure\u003C/span> \u003Cspan class=\"hljs-string\">npm\u003C/span> \u003Cspan class=\"hljs-string\">for\u003C/span> \u003Cspan class=\"hljs-string\">speed\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npm config set registry https://registry.npmjs.org/\n        npm config set fund false\n        npm config set audit false\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Install\u003C/span> \u003Cspan class=\"hljs-string\">dependencies\u003C/span> \u003Cspan class=\"hljs-string\">with\u003C/span> \u003Cspan class=\"hljs-string\">frozen\u003C/span> \u003Cspan class=\"hljs-string\">lockfile\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npm ci --ignore-scripts --prefer-offline\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Restore\u003C/span> \u003Cspan class=\"hljs-string\">markdown\u003C/span> \u003Cspan class=\"hljs-string\">cache\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/cache@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">.cache/markdown\u003C/span>\n        \u003Cspan class=\"hljs-attr\">key:\u003C/span> \u003Cspan class=\"hljs-string\">markdown-cache-${{\u003C/span> \u003Cspan class=\"hljs-string\">env.CACHE_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}-${{\u003C/span> \u003Cspan class=\"hljs-string\">hashFiles(&#x27;content/**/*.md&#x27;)\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">restore-keys:\u003C/span> \u003Cspan class=\"hljs-string\">|\n          markdown-cache-${{ env.CACHE_VERSION }}-\n          markdown-cache-\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Restore\u003C/span> \u003Cspan class=\"hljs-string\">build\u003C/span> \u003Cspan class=\"hljs-string\">cache\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/cache@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">|\n          .cache/build\n          public/\n\u003C/span>        \u003Cspan class=\"hljs-attr\">key:\u003C/span> \u003Cspan class=\"hljs-string\">build-cache-${{\u003C/span> \u003Cspan class=\"hljs-string\">env.CACHE_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}-${{\u003C/span> \u003Cspan class=\"hljs-string\">github.sha\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">restore-keys:\u003C/span> \u003Cspan class=\"hljs-string\">|\n          build-cache-${{ env.CACHE_VERSION }}-\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Check\u003C/span> \u003Cspan class=\"hljs-string\">for\u003C/span> \u003Cspan class=\"hljs-string\">content\u003C/span> \u003Cspan class=\"hljs-string\">changes\u003C/span>\n      \u003Cspan class=\"hljs-attr\">id:\u003C/span> \u003Cspan class=\"hljs-string\">content-changes\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        if [ &quot;${{ github.event_name }}&quot; == &quot;pull_request&quot; ]; then\n          CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} -- &#x27;content/**/*.md&#x27; &#x27;*.md&#x27; || echo &quot;&quot;)\n        else\n          CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD -- &#x27;content/**/*.md&#x27; &#x27;*.md&#x27; || echo &quot;&quot;)\n        fi\n\u003C/span>        \n        \u003Cspan class=\"hljs-string\">if\u003C/span> [ \u003Cspan class=\"hljs-string\">-n\u003C/span> \u003Cspan class=\"hljs-string\">&quot;$CHANGED_FILES&quot;\u003C/span> ]\u003Cspan class=\"hljs-string\">;\u003C/span> \u003Cspan class=\"hljs-string\">then\u003C/span>\n          \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;changed=true&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">$GITHUB_OUTPUT\u003C/span>\n          \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Changed files: $CHANGED_FILES&quot;\u003C/span>\n        \u003Cspan class=\"hljs-string\">else\u003C/span>\n          \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;changed=false&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">$GITHUB_OUTPUT\u003C/span>\n          \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;No content changes detected&quot;\u003C/span>\n        \u003Cspan class=\"hljs-string\">fi\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Parallel\u003C/span> \u003Cspan class=\"hljs-string\">processing\u003C/span> \u003Cspan class=\"hljs-string\">setup\u003C/span>\n      \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">steps.content-changes.outputs.changed\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;true&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        # Calculate optimal worker count based on available resources\n        WORKERS=$(node -e &quot;console.log(Math.max(1, Math.floor(require(&#x27;os&#x27;).cpus().length * 0.75)))&quot;)\n        echo &quot;WORKER_COUNT=$WORKERS&quot; &gt;&gt; $GITHUB_ENV\n        echo &quot;Using $WORKERS worker processes&quot;\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Pre-process\u003C/span> \u003Cspan class=\"hljs-string\">markdown\u003C/span> \u003Cspan class=\"hljs-string\">content\u003C/span>\n      \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">steps.content-changes.outputs.changed\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;true&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        node scripts/preprocess-markdown.js \\\n          --input content/ \\\n          --output .cache/preprocessed/ \\\n          --workers $WORKER_COUNT \\\n          --cache-dir .cache/markdown\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Generate\u003C/span> \u003Cspan class=\"hljs-string\">search\u003C/span> \u003Cspan class=\"hljs-string\">index\u003C/span>\n      \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">steps.content-changes.outputs.changed\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;true&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        node scripts/generate-search-index.js \\\n          --input .cache/preprocessed/ \\\n          --output public/search-index.json \\\n          --workers $WORKER_COUNT\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span> \u003Cspan class=\"hljs-string\">with\u003C/span> \u003Cspan class=\"hljs-string\">optimizations\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        NODE_ENV=production \\\n        MARKDOWN_CACHE_DIR=.cache/markdown \\\n        WORKER_COUNT=$WORKER_COUNT \\\n        npm run build:optimized\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Optimize\u003C/span> \u003Cspan class=\"hljs-string\">assets\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        # Parallel image optimization\n        find public/images -name &quot;*.jpg&quot; -o -name &quot;*.png&quot; | \\\n        xargs -P $WORKER_COUNT -I {} node scripts/optimize-image.js {}\n\u003C/span>        \n        \u003Cspan class=\"hljs-comment\"># Compress text assets\u003C/span>\n        \u003Cspan class=\"hljs-string\">find\u003C/span> \u003Cspan class=\"hljs-string\">public\u003C/span> \u003Cspan class=\"hljs-string\">-name\u003C/span> \u003Cspan class=\"hljs-string\">&quot;*.html&quot;\u003C/span> \u003Cspan class=\"hljs-string\">-o\u003C/span> \u003Cspan class=\"hljs-string\">-name\u003C/span> \u003Cspan class=\"hljs-string\">&quot;*.css&quot;\u003C/span> \u003Cspan class=\"hljs-string\">-o\u003C/span> \u003Cspan class=\"hljs-string\">-name\u003C/span> \u003Cspan class=\"hljs-string\">&quot;*.js&quot;\u003C/span> \u003Cspan class=\"hljs-string\">-o\u003C/span> \u003Cspan class=\"hljs-string\">-name\u003C/span> \u003Cspan class=\"hljs-string\">&quot;*.json&quot;\u003C/span> \u003Cspan class=\"hljs-string\">|\u003C/span> \u003Cspan class=\"hljs-string\">\\\u003C/span>\n        \u003Cspan class=\"hljs-string\">xargs\u003C/span> \u003Cspan class=\"hljs-string\">-P\u003C/span> \u003Cspan class=\"hljs-string\">$WORKER_COUNT\u003C/span> \u003Cspan class=\"hljs-string\">gzip\u003C/span> \u003Cspan class=\"hljs-string\">-k\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Generate\u003C/span> \u003Cspan class=\"hljs-string\">performance\u003C/span> \u003Cspan class=\"hljs-string\">manifest\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        node scripts/generate-performance-manifest.js \\\n          --input public/ \\\n          --output public/performance-manifest.json\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Upload\u003C/span> \u003Cspan class=\"hljs-string\">build\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/upload-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">optimized-build\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">public/\u003C/span>\n        \u003Cspan class=\"hljs-attr\">retention-days:\u003C/span> \u003Cspan class=\"hljs-number\">7\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Deploy\u003C/span> \u003Cspan class=\"hljs-string\">to\u003C/span> \u003Cspan class=\"hljs-string\">staging\u003C/span>\n      \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/develop&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        # Parallel file upload\n        node scripts/deploy.js --target staging --parallel $WORKER_COUNT\n\u003C/span>      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">DEPLOY_TOKEN:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.STAGING_DEPLOY_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Deploy\u003C/span> \u003Cspan class=\"hljs-string\">to\u003C/span> \u003Cspan class=\"hljs-string\">production\u003C/span>\n      \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/main&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        node scripts/deploy.js --target production --parallel $WORKER_COUNT\n\u003C/span>      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">DEPLOY_TOKEN:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.PRODUCTION_DEPLOY_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Update\u003C/span> \u003Cspan class=\"hljs-string\">performance\u003C/span> \u003Cspan class=\"hljs-string\">metrics\u003C/span>\n      \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">always()\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        node scripts/report-performance-metrics.js \\\n          --build-time ${{ job.duration }} \\\n          --cache-hit-rate &quot;$(cat .cache/stats.json | jq -r &#x27;.hitRate&#x27;)&quot;\n\u003C/span>      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">METRICS_API_TOKEN:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.METRICS_API_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n\n  \u003Cspan class=\"hljs-attr\">performance-audit:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> \u003Cspan class=\"hljs-string\">build-optimized\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">github.event_name\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;pull_request&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Checkout\u003C/span> \u003Cspan class=\"hljs-string\">repository\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Download\u003C/span> \u003Cspan class=\"hljs-string\">build\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/download-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">optimized-build\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">public/\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Node.js\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/setup-node@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">node-version:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">env.NODE_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Install\u003C/span> \u003Cspan class=\"hljs-string\">audit\u003C/span> \u003Cspan class=\"hljs-string\">tools\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npm install -g lighthouse-cli\n        npm install -g bundlesize\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Serve\u003C/span> \u003Cspan class=\"hljs-string\">build\u003C/span> \u003Cspan class=\"hljs-string\">locally\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npx serve public/ -p 3000 &amp;\n        sleep 5\n\u003C/span>      \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Run\u003C/span> \u003Cspan class=\"hljs-string\">Lighthouse\u003C/span> \u003Cspan class=\"hljs-string\">audit\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        lighthouse http://localhost:3000 \\\n          --output json \\\n          --output-path lighthouse-report.json \\\n          --chrome-flags=&quot;--headless --no-sandbox&quot;\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Check\u003C/span> \u003Cspan class=\"hljs-string\">bundle\u003C/span> \u003Cspan class=\"hljs-string\">sizes\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        bundlesize\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Analyze\u003C/span> \u003Cspan class=\"hljs-string\">performance\u003C/span> \u003Cspan class=\"hljs-string\">metrics\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        node scripts/analyze-performance-metrics.js \\\n          --lighthouse lighthouse-report.json \\\n          --manifest public/performance-manifest.json\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Comment\u003C/span> \u003Cspan class=\"hljs-string\">performance\u003C/span> \u003Cspan class=\"hljs-string\">results\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/github-script@v6\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">script:\u003C/span> \u003Cspan class=\"hljs-string\">|\n          const fs = require(&#x27;fs&#x27;);\n\u003C/span>          \n          \u003Cspan class=\"hljs-string\">try\u003C/span> {\n            \u003Cspan class=\"hljs-string\">const\u003C/span> \u003Cspan class=\"hljs-string\">lighthouse\u003C/span> \u003Cspan class=\"hljs-string\">=\u003C/span> \u003Cspan class=\"hljs-string\">JSON.parse(fs.readFileSync(&#x27;lighthouse-report.json&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">));\u003C/span>\n            \u003Cspan class=\"hljs-string\">const\u003C/span> \u003Cspan class=\"hljs-string\">manifest\u003C/span> \u003Cspan class=\"hljs-string\">=\u003C/span> \u003Cspan class=\"hljs-string\">JSON.parse(fs.readFileSync(&#x27;public/performance-manifest.json&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">));\u003C/span>\n            \n            \u003Cspan class=\"hljs-string\">const\u003C/span> \u003Cspan class=\"hljs-string\">metrics\u003C/span> \u003Cspan class=\"hljs-string\">=\u003C/span> \u003Cspan class=\"hljs-string\">lighthouse.lhr.audits;\u003C/span>\n            \u003Cspan class=\"hljs-string\">const\u003C/span> \u003Cspan class=\"hljs-string\">performanceScore\u003C/span> \u003Cspan class=\"hljs-string\">=\u003C/span> \u003Cspan class=\"hljs-string\">lighthouse.lhr.categories.performance.score\u003C/span> \u003Cspan class=\"hljs-string\">*\u003C/span> \u003Cspan class=\"hljs-number\">100\u003C/span>\u003Cspan class=\"hljs-string\">;\u003C/span>\n            \n            \u003Cspan class=\"hljs-string\">const\u003C/span> \u003Cspan class=\"hljs-string\">comment\u003C/span> \u003Cspan class=\"hljs-string\">=\u003C/span> \u003Cspan class=\"hljs-string\">`\u003C/span>\n            \u003Cspan class=\"hljs-comment\">## 🚀 Performance Audit Results\u003C/span>\n            \n            \u003Cspan class=\"hljs-string\">**Lighthouse\u003C/span> \u003Cspan class=\"hljs-string\">Performance\u003C/span> \u003Cspan class=\"hljs-string\">Score:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">performanceScore\u003C/span>}\u003Cspan class=\"hljs-string\">/100\u003C/span>\n            \n            \u003Cspan class=\"hljs-comment\">### Core Web Vitals\u003C/span>\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**First\u003C/span> \u003Cspan class=\"hljs-string\">Contentful\u003C/span> \u003Cspan class=\"hljs-string\">Paint:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">metrics\u003C/span>[\u003Cspan class=\"hljs-string\">&#x27;first-contentful-paint&#x27;\u003C/span>]\u003Cspan class=\"hljs-string\">.displayValue\u003C/span>}\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Largest\u003C/span> \u003Cspan class=\"hljs-string\">Contentful\u003C/span> \u003Cspan class=\"hljs-string\">Paint:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">metrics\u003C/span>[\u003Cspan class=\"hljs-string\">&#x27;largest-contentful-paint&#x27;\u003C/span>]\u003Cspan class=\"hljs-string\">.displayValue\u003C/span>}\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Cumulative\u003C/span> \u003Cspan class=\"hljs-string\">Layout\u003C/span> \u003Cspan class=\"hljs-string\">Shift:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">metrics\u003C/span>[\u003Cspan class=\"hljs-string\">&#x27;cumulative-layout-shift&#x27;\u003C/span>]\u003Cspan class=\"hljs-string\">.displayValue\u003C/span>}\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Speed\u003C/span> \u003Cspan class=\"hljs-string\">Index:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">metrics\u003C/span>[\u003Cspan class=\"hljs-string\">&#x27;speed-index&#x27;\u003C/span>]\u003Cspan class=\"hljs-string\">.displayValue\u003C/span>}\n            \n            \u003Cspan class=\"hljs-comment\">### Build Performance  \u003C/span>\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Total\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span> \u003Cspan class=\"hljs-string\">Time:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">manifest.buildTime\u003C/span>}\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Cache\u003C/span> \u003Cspan class=\"hljs-string\">Hit\u003C/span> \u003Cspan class=\"hljs-string\">Rate:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">manifest.cacheHitRate\u003C/span>}\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Files\u003C/span> \u003Cspan class=\"hljs-string\">Processed:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">manifest.filesProcessed\u003C/span>}\n            \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">**Bundle\u003C/span> \u003Cspan class=\"hljs-string\">Size:**\u003C/span> \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">manifest.totalBundleSize\u003C/span>}\n            \n            \u003Cspan class=\"hljs-string\">$\u003C/span>{\u003Cspan class=\"hljs-string\">performanceScore\u003C/span> \u003Cspan class=\"hljs-string\">&lt;\u003C/span> \u003Cspan class=\"hljs-number\">90\u003C/span> \u003Cspan class=\"hljs-string\">?\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;⚠️ **Performance score is below 90. Consider optimizing.**&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;✅ **Excellent performance!**&#x27;\u003C/span>}\n            \u003Cspan class=\"hljs-string\">`;\u003C/span>\n            \n            \u003Cspan class=\"hljs-string\">github.rest.issues.createComment(\u003C/span>{\n              \u003Cspan class=\"hljs-attr\">issue_number:\u003C/span> \u003Cspan class=\"hljs-string\">context.issue.number\u003C/span>,\n              \u003Cspan class=\"hljs-attr\">owner:\u003C/span> \u003Cspan class=\"hljs-string\">context.repo.owner\u003C/span>,\n              \u003Cspan class=\"hljs-attr\">repo:\u003C/span> \u003Cspan class=\"hljs-string\">context.repo.repo\u003C/span>,\n              \u003Cspan class=\"hljs-attr\">body:\u003C/span> \u003Cspan class=\"hljs-string\">comment\u003C/span>\n            }\u003Cspan class=\"hljs-string\">);\u003C/span>\n          } \u003Cspan class=\"hljs-string\">catch\u003C/span> \u003Cspan class=\"hljs-string\">(error)\u003C/span> {\n            \u003Cspan class=\"hljs-string\">console.error(&#x27;Failed\u003C/span> \u003Cspan class=\"hljs-string\">to\u003C/span> \u003Cspan class=\"hljs-string\">post\u003C/span> \u003Cspan class=\"hljs-string\">performance\u003C/span> \u003Cspan class=\"hljs-string\">comment:&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">error);\u003C/span>\n          }\n\u003C/code>\u003C/pre>\u003Ch2 id=\"runtime-performance-monitoring\">Runtime Performance Monitoring\u003C/h2>\n\u003Cp>Performance monitoring systems integrate seamlessly with comprehensive documentation workflows. When combined with \u003Ca href=\"/blog/markdown-automation-workflows-complete-guide\">automation systems and CI/CD integration\u003C/a>, performance monitoring becomes part of the continuous development process, ensuring optimal rendering speeds are maintained as content scales and new features are added to documentation platforms.\u003C/p>\n\u003Cp>For sophisticated content management, performance optimization works effectively with \u003Ca href=\"/blog/markdown-progressive-web-app-documentation-complete-guide\">progressive web app documentation systems\u003C/a> to create fast, responsive documentation experiences that work seamlessly across devices while maintaining optimal loading performance through service worker caching and intelligent prefetching strategies.\u003C/p>\n\u003Cp>When building comprehensive documentation architectures, performance monitoring complements \u003Ca href=\"/blog/markdown-version-control-git-integration-complete-guide\">version control and collaborative workflows\u003C/a> by providing performance regression detection in CI/CD pipelines, ensuring that collaborative content changes don&#39;t introduce performance bottlenecks that could impact user experience.\u003C/p>\n\u003Ch3 id=\"real-time-performance-tracking\">Real-time Performance Tracking\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// performance-monitor.js - Real-time performance monitoring\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MarkdownPerformanceMonitor\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">sampleRate\u003C/span>: options.\u003Cspan class=\"hljs-property\">sampleRate\u003C/span> || \u003Cspan class=\"hljs-number\">0.1\u003C/span>, \u003Cspan class=\"hljs-comment\">// 10% sampling\u003C/span>\n            \u003Cspan class=\"hljs-attr\">metricsEndpoint\u003C/span>: options.\u003Cspan class=\"hljs-property\">metricsEndpoint\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">bufferSize\u003C/span>: options.\u003Cspan class=\"hljs-property\">bufferSize\u003C/span> || \u003Cspan class=\"hljs-number\">100\u003C/span>,\n            ...options\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span> = [];\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span> = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateSessionId\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">startTime\u003C/span> = \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n        \n        \u003Cspan class=\"hljs-comment\">// Web Vitals tracking\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">vitals\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">FCP\u003C/span>: \u003Cspan class=\"hljs-literal\">null\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">LCP\u003C/span>: \u003Cspan class=\"hljs-literal\">null\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">CLS\u003C/span>: \u003Cspan class=\"hljs-literal\">null\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">FID\u003C/span>: \u003Cspan class=\"hljs-literal\">null\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">TTFB\u003C/span>: \u003Cspan class=\"hljs-literal\">null\u003C/span>\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">initializeTracking\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateSessionId\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>().\u003Cspan class=\"hljs-title function_\">toString\u003C/span>(\u003Cspan class=\"hljs-number\">36\u003C/span>) + \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">random\u003C/span>().\u003Cspan class=\"hljs-title function_\">toString\u003C/span>(\u003Cspan class=\"hljs-number\">36\u003C/span>).\u003Cspan class=\"hljs-title function_\">substr\u003C/span>(\u003Cspan class=\"hljs-number\">2\u003C/span>, \u003Cspan class=\"hljs-number\">9\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">initializeTracking\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Track page load performance\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-keyword\">typeof\u003C/span> \u003Cspan class=\"hljs-variable language_\">window\u003C/span> !== \u003Cspan class=\"hljs-string\">&#x27;undefined&#x27;\u003C/span> &amp;&amp; \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span>) {\n            \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-title function_\">addEventListener\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;load&#x27;\u003C/span>, \u003Cspan class=\"hljs-function\">() =&gt;\u003C/span> {\n                \u003Cspan class=\"hljs-built_in\">setTimeout\u003C/span>(\u003Cspan class=\"hljs-function\">() =&gt;\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">collectLoadMetrics\u003C/span>(), \u003Cspan class=\"hljs-number\">0\u003C/span>);\n            });\n            \n            \u003Cspan class=\"hljs-comment\">// Track Web Vitals\u003C/span>\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">trackWebVitals\u003C/span>();\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">trackWebVitals\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Simplified Web Vitals tracking\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// In production, use the actual web-vitals library\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\">// First Contentful Paint\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span> &amp;&amp; \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span>.\u003Cspan class=\"hljs-property\">getEntriesByName\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> fcpEntry = \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span>.\u003Cspan class=\"hljs-title function_\">getEntriesByName\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;first-contentful-paint&#x27;\u003C/span>)[\u003Cspan class=\"hljs-number\">0\u003C/span>];\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (fcpEntry) {\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">vitals\u003C/span>.\u003Cspan class=\"hljs-property\">FCP\u003C/span> = fcpEntry.\u003Cspan class=\"hljs-property\">startTime\u003C/span>;\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Largest Contentful Paint\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-string\">&#x27;PerformanceObserver&#x27;\u003C/span> \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-variable language_\">window\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> lcpObserver = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">PerformanceObserver\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">list\u003C/span>) =&gt;\u003C/span> {\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> entries = list.\u003Cspan class=\"hljs-title function_\">getEntries\u003C/span>();\n                    \u003Cspan class=\"hljs-keyword\">const\u003C/span> lastEntry = entries[entries.\u003Cspan class=\"hljs-property\">length\u003C/span> - \u003Cspan class=\"hljs-number\">1\u003C/span>];\n                    \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">vitals\u003C/span>.\u003Cspan class=\"hljs-property\">LCP\u003C/span> = lastEntry.\u003Cspan class=\"hljs-property\">startTime\u003C/span>;\n                });\n                lcpObserver.\u003Cspan class=\"hljs-title function_\">observe\u003C/span>({ \u003Cspan class=\"hljs-attr\">entryTypes\u003C/span>: [\u003Cspan class=\"hljs-string\">&#x27;largest-contentful-paint&#x27;\u003C/span>] });\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (e) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;LCP observation not supported&#x27;\u003C/span>);\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Cumulative Layout Shift\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> clsValue = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> clsEntries = [];\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-string\">&#x27;PerformanceObserver&#x27;\u003C/span> \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-variable language_\">window\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> clsObserver = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">PerformanceObserver\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">list\u003C/span>) =&gt;\u003C/span> {\n                    \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> entry \u003Cspan class=\"hljs-keyword\">of\u003C/span> list.\u003Cspan class=\"hljs-title function_\">getEntries\u003C/span>()) {\n                        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!entry.\u003Cspan class=\"hljs-property\">hadRecentInput\u003C/span>) {\n                            clsEntries.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(entry);\n                            clsValue += entry.\u003Cspan class=\"hljs-property\">value\u003C/span>;\n                        }\n                    }\n                    \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">vitals\u003C/span>.\u003Cspan class=\"hljs-property\">CLS\u003C/span> = clsValue;\n                });\n                clsObserver.\u003Cspan class=\"hljs-title function_\">observe\u003C/span>({ \u003Cspan class=\"hljs-attr\">entryTypes\u003C/span>: [\u003Cspan class=\"hljs-string\">&#x27;layout-shift&#x27;\u003C/span>] });\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (e) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;CLS observation not supported&#x27;\u003C/span>);\n            }\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">collectLoadMetrics\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!\u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span> || !\u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span>.\u003Cspan class=\"hljs-property\">timing\u003C/span>) \u003Cspan class=\"hljs-keyword\">return\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> timing = \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span>.\u003Cspan class=\"hljs-property\">timing\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> navigation = \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">performance\u003C/span>.\u003Cspan class=\"hljs-property\">navigation\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> metrics = {\n            \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;page-load&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">sessionId\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n            \u003Cspan class=\"hljs-attr\">url\u003C/span>: \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">location\u003C/span>.\u003Cspan class=\"hljs-property\">href\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">userAgent\u003C/span>: navigator.\u003Cspan class=\"hljs-property\">userAgent\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Navigation timing\u003C/span>\n            \u003Cspan class=\"hljs-attr\">navigationStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domainLookupStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domainLookupStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domainLookupEnd\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domainLookupEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">connectStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">connectStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">connectEnd\u003C/span>: timing.\u003Cspan class=\"hljs-property\">connectEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">requestStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">requestStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">responseStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">responseStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">responseEnd\u003C/span>: timing.\u003Cspan class=\"hljs-property\">responseEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domLoading\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domLoading\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domInteractive\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domInteractive\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domContentLoadedEventStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domContentLoadedEventStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domContentLoadedEventEnd\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domContentLoadedEventEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domComplete\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domComplete\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">loadEventStart\u003C/span>: timing.\u003Cspan class=\"hljs-property\">loadEventStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">loadEventEnd\u003C/span>: timing.\u003Cspan class=\"hljs-property\">loadEventEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Derived metrics\u003C/span>\n            \u003Cspan class=\"hljs-attr\">ttfb\u003C/span>: timing.\u003Cspan class=\"hljs-property\">responseStart\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">domContentLoaded\u003C/span>: timing.\u003Cspan class=\"hljs-property\">domContentLoadedEventEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">windowLoad\u003C/span>: timing.\u003Cspan class=\"hljs-property\">loadEventEnd\u003C/span> - timing.\u003Cspan class=\"hljs-property\">navigationStart\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Web Vitals\u003C/span>\n            \u003Cspan class=\"hljs-attr\">webVitals\u003C/span>: { ...\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">vitals\u003C/span> },\n            \n            \u003Cspan class=\"hljs-comment\">// Navigation type\u003C/span>\n            \u003Cspan class=\"hljs-attr\">navigationType\u003C/span>: navigation.\u003Cspan class=\"hljs-property\">type\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">redirectCount\u003C/span>: navigation.\u003Cspan class=\"hljs-property\">redirectCount\u003C/span>\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">recordMetric\u003C/span>(metrics);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">trackMarkdownRender\u003C/span>(\u003Cspan class=\"hljs-params\">startTime, endTime, metadata = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> renderTime = endTime - startTime;\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> metric = {\n            \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;markdown-render&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">sessionId\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n            renderTime,\n            ...metadata\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">recordMetric\u003C/span>(metric);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">trackSearchPerformance\u003C/span>(\u003Cspan class=\"hljs-params\">query, resultCount, searchTime\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> metric = {\n            \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;search&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">sessionId\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n            \u003Cspan class=\"hljs-attr\">query\u003C/span>: query.\u003Cspan class=\"hljs-title function_\">substring\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>, \u003Cspan class=\"hljs-number\">100\u003C/span>), \u003Cspan class=\"hljs-comment\">// Limit query length\u003C/span>\n            resultCount,\n            searchTime\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">recordMetric\u003C/span>(metric);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">trackUserInteraction\u003C/span>(\u003Cspan class=\"hljs-params\">action, target, duration = \u003Cspan class=\"hljs-literal\">null\u003C/span>\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> metric = {\n            \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;interaction&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">sessionId\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n            action,\n            \u003Cspan class=\"hljs-attr\">target\u003C/span>: target.\u003Cspan class=\"hljs-title function_\">substring\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>, \u003Cspan class=\"hljs-number\">200\u003C/span>),\n            duration\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">recordMetric\u003C/span>(metric);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">recordMetric\u003C/span>(\u003Cspan class=\"hljs-params\">metric\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Apply sampling\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">random\u003C/span>() &gt; \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">sampleRate\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span>;\n        }\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(metric);\n        \n        \u003Cspan class=\"hljs-comment\">// Flush buffer when full\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span>.\u003Cspan class=\"hljs-property\">length\u003C/span> &gt;= \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">bufferSize\u003C/span>) {\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">flushMetrics\u003C/span>();\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">flushMetrics\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span>.\u003Cspan class=\"hljs-property\">length\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) \u003Cspan class=\"hljs-keyword\">return\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> metrics = [...\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span>];\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span> = [];\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">metricsEndpoint\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">fetch\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">metricsEndpoint\u003C/span>, {\n                    \u003Cspan class=\"hljs-attr\">method\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;POST&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">headers\u003C/span>: {\n                        \u003Cspan class=\"hljs-string\">&#x27;Content-Type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;application/json&#x27;\u003C/span>\n                    },\n                    \u003Cspan class=\"hljs-attr\">body\u003C/span>: \u003Cspan class=\"hljs-title class_\">JSON\u003C/span>.\u003Cspan class=\"hljs-title function_\">stringify\u003C/span>({\n                        \u003Cspan class=\"hljs-attr\">sessionId\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span>,\n                        metrics\n                    })\n                });\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Failed to send performance metrics:&#x27;\u003C/span>, error);\n                \u003Cspan class=\"hljs-comment\">// Restore metrics to buffer for retry\u003C/span>\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span>.\u003Cspan class=\"hljs-title function_\">unshift\u003C/span>(...metrics);\n            }\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">getSessionMetrics\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">sessionId\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">sessionId\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">sessionDuration\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>() - \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">startTime\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">metricsRecorded\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metricsBuffer\u003C/span>.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">webVitals\u003C/span>: { ...\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">vitals\u003C/span> }\n        };\n    }\n    \n    \u003Cspan class=\"hljs-comment\">// Cleanup when page is about to unload\u003C/span>\n    \u003Cspan class=\"hljs-title function_\">cleanup\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">flushMetrics\u003C/span>();\n    }\n}\n\n\u003Cspan class=\"hljs-comment\">// Server-side performance monitoring\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">ServerPerformanceMonitor\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">enableCpuProfiling\u003C/span>: options.\u003Cspan class=\"hljs-property\">enableCpuProfiling\u003C/span> || \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">enableMemoryProfiling\u003C/span>: options.\u003Cspan class=\"hljs-property\">enableMemoryProfiling\u003C/span> || \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n            ...options\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">renderTimes\u003C/span>: [],\n            \u003Cspan class=\"hljs-attr\">memoryUsage\u003C/span>: [],\n            \u003Cspan class=\"hljs-attr\">cpuUsage\u003C/span>: []\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">enableMemoryProfiling\u003C/span>) {\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">startMemoryMonitoring\u003C/span>();\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">options\u003C/span>.\u003Cspan class=\"hljs-property\">enableCpuProfiling\u003C/span>) {\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">startCpuMonitoring\u003C/span>();\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">startMemoryMonitoring\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-built_in\">setInterval\u003C/span>(\u003Cspan class=\"hljs-function\">() =&gt;\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> usage = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>();\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n                ...usage\n            });\n            \n            \u003Cspan class=\"hljs-comment\">// Keep only last 1000 measurements\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span>.\u003Cspan class=\"hljs-property\">length\u003C/span> &gt; \u003Cspan class=\"hljs-number\">1000\u003C/span>) {\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span>.\u003Cspan class=\"hljs-title function_\">shift\u003C/span>();\n            }\n        }, \u003Cspan class=\"hljs-number\">5000\u003C/span>); \u003Cspan class=\"hljs-comment\">// Every 5 seconds\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">startCpuMonitoring\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> { performance } = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;perf_hooks&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-built_in\">setInterval\u003C/span>(\u003Cspan class=\"hljs-function\">() =&gt;\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> usage = process.\u003Cspan class=\"hljs-title function_\">cpuUsage\u003C/span>();\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">cpuUsage\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n                \u003Cspan class=\"hljs-attr\">user\u003C/span>: usage.\u003Cspan class=\"hljs-property\">user\u003C/span> / \u003Cspan class=\"hljs-number\">1000\u003C/span>, \u003Cspan class=\"hljs-comment\">// Convert to ms\u003C/span>\n                \u003Cspan class=\"hljs-attr\">system\u003C/span>: usage.\u003Cspan class=\"hljs-property\">system\u003C/span> / \u003Cspan class=\"hljs-number\">1000\u003C/span>\n            });\n            \n            \u003Cspan class=\"hljs-comment\">// Keep only last 1000 measurements\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">cpuUsage\u003C/span>.\u003Cspan class=\"hljs-property\">length\u003C/span> &gt; \u003Cspan class=\"hljs-number\">1000\u003C/span>) {\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">cpuUsage\u003C/span>.\u003Cspan class=\"hljs-title function_\">shift\u003C/span>();\n            }\n        }, \u003Cspan class=\"hljs-number\">1000\u003C/span>); \u003Cspan class=\"hljs-comment\">// Every second\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">trackMarkdownProcessing\u003C/span>(\u003Cspan class=\"hljs-params\">processingFunction\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-keyword\">async\u003C/span> (...args) =&gt; {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> startTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> startMemory = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>().\u003Cspan class=\"hljs-property\">heapUsed\u003C/span>;\n            \n            \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> result = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">processingFunction\u003C/span>(...args);\n                \n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> endTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> endMemory = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>().\u003Cspan class=\"hljs-property\">heapUsed\u003C/span>;\n                \n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">renderTimes\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                    \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n                    \u003Cspan class=\"hljs-attr\">duration\u003C/span>: endTime - startTime,\n                    \u003Cspan class=\"hljs-attr\">memoryDelta\u003C/span>: endMemory - startMemory,\n                    \u003Cspan class=\"hljs-attr\">success\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>\n                });\n                \n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> result;\n            } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n                \u003Cspan class=\"hljs-keyword\">const\u003C/span> endTime = performance.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n                \n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">renderTimes\u003C/span>.\u003Cspan class=\"hljs-title function_\">push\u003C/span>({\n                    \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>(),\n                    \u003Cspan class=\"hljs-attr\">duration\u003C/span>: endTime - startTime,\n                    \u003Cspan class=\"hljs-attr\">success\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">error\u003C/span>: error.\u003Cspan class=\"hljs-property\">message\u003C/span>\n                });\n                \n                \u003Cspan class=\"hljs-keyword\">throw\u003C/span> error;\n            }\n        };\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">getPerformanceReport\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> now = \u003Cspan class=\"hljs-title class_\">Date\u003C/span>.\u003Cspan class=\"hljs-title function_\">now\u003C/span>();\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> oneHourAgo = now - \u003Cspan class=\"hljs-number\">3600000\u003C/span>;\n        \n        \u003Cspan class=\"hljs-comment\">// Filter recent metrics\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> recentRenderTimes = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">renderTimes\u003C/span>.\u003Cspan class=\"hljs-title function_\">filter\u003C/span>(\n            \u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">m\u003C/span> =&gt;\u003C/span> m.\u003Cspan class=\"hljs-property\">timestamp\u003C/span> &gt; oneHourAgo\n        );\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> recentMemoryUsage = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">metrics\u003C/span>.\u003Cspan class=\"hljs-property\">memoryUsage\u003C/span>.\u003Cspan class=\"hljs-title function_\">filter\u003C/span>(\n            \u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">m\u003C/span> =&gt;\u003C/span> m.\u003Cspan class=\"hljs-property\">timestamp\u003C/span> &gt; oneHourAgo\n        );\n        \n        \u003Cspan class=\"hljs-comment\">// Calculate statistics\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> renderStats = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">calculateRenderStats\u003C/span>(recentRenderTimes);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> memoryStats = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">calculateMemoryStats\u003C/span>(recentMemoryUsage);\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">timestamp\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>().\u003Cspan class=\"hljs-title function_\">toISOString\u003C/span>(),\n            \u003Cspan class=\"hljs-attr\">timeWindow\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;1 hour&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">renderingPerformance\u003C/span>: renderStats,\n            \u003Cspan class=\"hljs-attr\">memoryPerformance\u003C/span>: memoryStats,\n            \u003Cspan class=\"hljs-attr\">systemInfo\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">nodeVersion\u003C/span>: process.\u003Cspan class=\"hljs-property\">version\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">platform\u003C/span>: process.\u003Cspan class=\"hljs-property\">platform\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">arch\u003C/span>: process.\u003Cspan class=\"hljs-property\">arch\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">uptime\u003C/span>: process.\u003Cspan class=\"hljs-title function_\">uptime\u003C/span>()\n            }\n        };\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">calculateRenderStats\u003C/span>(\u003Cspan class=\"hljs-params\">renderTimes\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (renderTimes.\u003Cspan class=\"hljs-property\">length\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> { \u003Cspan class=\"hljs-attr\">totalRequests\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span> };\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> durations = renderTimes.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">r\u003C/span> =&gt;\u003C/span> r.\u003Cspan class=\"hljs-property\">duration\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> successful = renderTimes.\u003Cspan class=\"hljs-title function_\">filter\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">r\u003C/span> =&gt;\u003C/span> r.\u003Cspan class=\"hljs-property\">success\u003C/span>);\n        \n        durations.\u003Cspan class=\"hljs-title function_\">sort\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a - b);\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">totalRequests\u003C/span>: renderTimes.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">successfulRequests\u003C/span>: successful.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">failedRequests\u003C/span>: renderTimes.\u003Cspan class=\"hljs-property\">length\u003C/span> - successful.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">averageDuration\u003C/span>: durations.\u003Cspan class=\"hljs-title function_\">reduce\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a + b) / durations.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">medianDuration\u003C/span>: durations[\u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">floor\u003C/span>(durations.\u003Cspan class=\"hljs-property\">length\u003C/span> / \u003Cspan class=\"hljs-number\">2\u003C/span>)],\n            \u003Cspan class=\"hljs-attr\">p95Duration\u003C/span>: durations[\u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">floor\u003C/span>(durations.\u003Cspan class=\"hljs-property\">length\u003C/span> * \u003Cspan class=\"hljs-number\">0.95\u003C/span>)],\n            \u003Cspan class=\"hljs-attr\">p99Duration\u003C/span>: durations[\u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">floor\u003C/span>(durations.\u003Cspan class=\"hljs-property\">length\u003C/span> * \u003Cspan class=\"hljs-number\">0.99\u003C/span>)],\n            \u003Cspan class=\"hljs-attr\">minDuration\u003C/span>: \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">min\u003C/span>(...durations),\n            \u003Cspan class=\"hljs-attr\">maxDuration\u003C/span>: \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(...durations)\n        };\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">calculateMemoryStats\u003C/span>(\u003Cspan class=\"hljs-params\">memoryUsage\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (memoryUsage.\u003Cspan class=\"hljs-property\">length\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> {};\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> heapUsed = memoryUsage.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">m\u003C/span> =&gt;\u003C/span> m.\u003Cspan class=\"hljs-property\">heapUsed\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> heapTotal = memoryUsage.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">m\u003C/span> =&gt;\u003C/span> m.\u003Cspan class=\"hljs-property\">heapTotal\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">averageHeapUsed\u003C/span>: heapUsed.\u003Cspan class=\"hljs-title function_\">reduce\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a + b) / heapUsed.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">maxHeapUsed\u003C/span>: \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(...heapUsed),\n            \u003Cspan class=\"hljs-attr\">averageHeapTotal\u003C/span>: heapTotal.\u003Cspan class=\"hljs-title function_\">reduce\u003C/span>(\u003Cspan class=\"hljs-function\">(\u003Cspan class=\"hljs-params\">a, b\u003C/span>) =&gt;\u003C/span> a + b) / heapTotal.\u003Cspan class=\"hljs-property\">length\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">maxHeapTotal\u003C/span>: \u003Cspan class=\"hljs-title class_\">Math\u003C/span>.\u003Cspan class=\"hljs-title function_\">max\u003C/span>(...heapTotal)\n        };\n    }\n}\n\n\u003Cspan class=\"hljs-variable language_\">module\u003C/span>.\u003Cspan class=\"hljs-property\">exports\u003C/span> = { \u003Cspan class=\"hljs-title class_\">MarkdownPerformanceMonitor\u003C/span>, \u003Cspan class=\"hljs-title class_\">ServerPerformanceMonitor\u003C/span> };\n\u003C/code>\u003C/pre>\u003Ch2 id=\"troubleshooting-performance-issues\">Troubleshooting Performance Issues\u003C/h2>\n\u003Ch3 id=\"common-performance-bottlenecks\">Common Performance Bottlenecks\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Slow rendering of large documents\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// Document chunking for improved performance\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">DocumentChunker\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span> = options.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span> || \u003Cspan class=\"hljs-number\">50000\u003C/span>; \u003Cspan class=\"hljs-comment\">// 50KB chunks\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">progressiveRender\u003C/span> = options.\u003Cspan class=\"hljs-property\">progressiveRender\u003C/span> !== \u003Cspan class=\"hljs-literal\">false\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">renderLargeDocument\u003C/span>(\u003Cspan class=\"hljs-params\">content, parser\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (content.\u003Cspan class=\"hljs-property\">length\u003C/span> &lt;= \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> parser.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(content);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Split document into logical chunks\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunks = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">splitIntoChunks\u003C/span>(content);\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">progressiveRender\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">renderProgressively\u003C/span>(chunks, parser);\n        } \u003Cspan class=\"hljs-keyword\">else\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">renderInParallel\u003C/span>(chunks, parser);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">splitIntoChunks\u003C/span>(\u003Cspan class=\"hljs-params\">content\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Smart chunking based on document structure\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> sections = content.\u003Cspan class=\"hljs-title function_\">split\u003C/span>(\u003Cspan class=\"hljs-regexp\">/\\n(?=#{1,6}\\s)/\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> chunks = [];\n        \u003Cspan class=\"hljs-keyword\">let\u003C/span> currentChunk = \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>;\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> section \u003Cspan class=\"hljs-keyword\">of\u003C/span> sections) {\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (currentChunk.\u003Cspan class=\"hljs-property\">length\u003C/span> + section.\u003Cspan class=\"hljs-property\">length\u003C/span> &gt; \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">chunkSize\u003C/span> &amp;&amp; currentChunk) {\n                chunks.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(currentChunk.\u003Cspan class=\"hljs-title function_\">trim\u003C/span>());\n                currentChunk = section;\n            } \u003Cspan class=\"hljs-keyword\">else\u003C/span> {\n                currentChunk += \u003Cspan class=\"hljs-string\">&#x27;\\n&#x27;\u003C/span> + section;\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (currentChunk) {\n            chunks.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(currentChunk.\u003Cspan class=\"hljs-title function_\">trim\u003C/span>());\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> chunks;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">renderProgressively\u003C/span>(\u003Cspan class=\"hljs-params\">chunks, parser\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> results = [];\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">let\u003C/span> i = \u003Cspan class=\"hljs-number\">0\u003C/span>; i &lt; chunks.\u003Cspan class=\"hljs-property\">length\u003C/span>; i++) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> html = \u003Cspan class=\"hljs-keyword\">await\u003C/span> parser.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(chunks[i]);\n            results.\u003Cspan class=\"hljs-title function_\">push\u003C/span>(html);\n            \n            \u003Cspan class=\"hljs-comment\">// Yield control to event loop\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Promise\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">resolve\u003C/span> =&gt;\u003C/span> \u003Cspan class=\"hljs-built_in\">setTimeout\u003C/span>(resolve, \u003Cspan class=\"hljs-number\">0\u003C/span>));\n            \n            \u003Cspan class=\"hljs-comment\">// Emit progress event\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-keyword\">typeof\u003C/span> \u003Cspan class=\"hljs-variable language_\">window\u003C/span> !== \u003Cspan class=\"hljs-string\">&#x27;undefined&#x27;\u003C/span> &amp;&amp; \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-property\">dispatchEvent\u003C/span>) {\n                \u003Cspan class=\"hljs-variable language_\">window\u003C/span>.\u003Cspan class=\"hljs-title function_\">dispatchEvent\u003C/span>(\u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">CustomEvent\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;render-progress&#x27;\u003C/span>, {\n                    \u003Cspan class=\"hljs-attr\">detail\u003C/span>: { \u003Cspan class=\"hljs-attr\">completed\u003C/span>: i + \u003Cspan class=\"hljs-number\">1\u003C/span>, \u003Cspan class=\"hljs-attr\">total\u003C/span>: chunks.\u003Cspan class=\"hljs-property\">length\u003C/span> }\n                }));\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> results.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;\\n&#x27;\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">renderInParallel\u003C/span>(\u003Cspan class=\"hljs-params\">chunks, parser\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> promises = chunks.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">chunk\u003C/span> =&gt;\u003C/span> parser.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(chunk));\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> results = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title class_\">Promise\u003C/span>.\u003Cspan class=\"hljs-title function_\">all\u003C/span>(promises);\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> results.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;\\n&#x27;\u003C/span>);\n    }\n}\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Problem\u003C/strong>: Memory leaks in long-running applications\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// Memory management for markdown processors\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MemoryEfficientProcessor\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">parser, options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span> = parser;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">gcThreshold\u003C/span> = options.\u003Cspan class=\"hljs-property\">gcThreshold\u003C/span> || \u003Cspan class=\"hljs-number\">100\u003C/span>; \u003Cspan class=\"hljs-comment\">// Process count before GC\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processedCount\u003C/span> = \u003Cspan class=\"hljs-number\">0\u003C/span>;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">maxCacheSize\u003C/span> = options.\u003Cspan class=\"hljs-property\">maxCacheSize\u003C/span> || \u003Cspan class=\"hljs-number\">50\u003C/span> * \u003Cspan class=\"hljs-number\">1024\u003C/span> * \u003Cspan class=\"hljs-number\">1024\u003C/span>; \u003Cspan class=\"hljs-comment\">// 50MB\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span> = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Map\u003C/span>();\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">process\u003C/span>(\u003Cspan class=\"hljs-params\">content\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> result = \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">parser\u003C/span>.\u003Cspan class=\"hljs-title function_\">render\u003C/span>(content);\n            \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processedCount\u003C/span>++;\n            \n            \u003Cspan class=\"hljs-comment\">// Trigger garbage collection if threshold reached\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">processedCount\u003C/span> % \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">gcThreshold\u003C/span> === \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">performGarbageCollection\u003C/span>();\n            }\n            \n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> result;\n        } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">error\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Processing failed:&#x27;\u003C/span>, error);\n            \u003Cspan class=\"hljs-keyword\">throw\u003C/span> error;\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">performGarbageCollection\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Clear caches\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">cache\u003C/span>.\u003Cspan class=\"hljs-title function_\">clear\u003C/span>();\n        \n        \u003Cspan class=\"hljs-comment\">// Force garbage collection if available\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-variable language_\">global\u003C/span>.\u003Cspan class=\"hljs-property\">gc\u003C/span>) {\n            \u003Cspan class=\"hljs-variable language_\">global\u003C/span>.\u003Cspan class=\"hljs-title function_\">gc\u003C/span>();\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Log memory usage\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> usage = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Memory usage after GC: \u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-built_in\">Math\u003C/span>.round(usage.heapUsed / \u003Cspan class=\"hljs-number\">1024\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span>)}\u003C/span>MB`\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">monitorMemoryUsage\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-built_in\">setInterval\u003C/span>(\u003Cspan class=\"hljs-function\">() =&gt;\u003C/span> {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> usage = process.\u003Cspan class=\"hljs-title function_\">memoryUsage\u003C/span>();\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> heapUsedMB = usage.\u003Cspan class=\"hljs-property\">heapUsed\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span> / \u003Cspan class=\"hljs-number\">1024\u003C/span>;\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> (heapUsedMB &gt; \u003Cspan class=\"hljs-number\">200\u003C/span>) { \u003Cspan class=\"hljs-comment\">// 200MB threshold\u003C/span>\n                \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">`High memory usage detected: \u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-built_in\">Math\u003C/span>.round(heapUsedMB)}\u003C/span>MB`\u003C/span>);\n                \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">performGarbageCollection\u003C/span>();\n            }\n        }, \u003Cspan class=\"hljs-number\">30000\u003C/span>); \u003Cspan class=\"hljs-comment\">// Check every 30 seconds\u003C/span>\n    }\n}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>Advanced Markdown performance optimization represents a critical aspect of building scalable documentation systems that deliver exceptional user experiences while maintaining efficient resource utilization and rapid content processing capabilities. By implementing comprehensive caching strategies, parser optimization techniques, and intelligent performance monitoring systems, technical teams can achieve dramatic improvements in rendering speed and system responsiveness that directly impact user satisfaction and operational efficiency.\u003C/p>\n\u003Cp>The key to successful performance optimization lies in systematic measurement, strategic caching implementation, and continuous monitoring of both client-side and server-side performance metrics. Whether you&#39;re building static site generators, real-time documentation platforms, or large-scale content management systems, the techniques covered in this guide provide the foundation for creating high-performance Markdown processing systems that scale effectively with growing content volumes and user demands.\u003C/p>\n\u003Cp>Remember to implement performance monitoring early in your development process, regularly profile your parsing workflows to identify bottlenecks, and continuously optimize your caching strategies based on real-world usage patterns. With proper implementation of advanced performance optimization techniques, your Markdown-based systems can deliver lightning-fast content rendering while maintaining the flexibility and simplicity that makes Markdown such an effective format for technical documentation and content management.\u003C/p>\n",[15,19,22,25,28,31],{"id":16,"text":17,"level":18},"why-optimize-markdown-performance","Why Optimize Markdown Performance?",2,{"id":20,"text":21,"level":18},"foundation-performance-analysis","Foundation Performance Analysis",{"id":23,"text":24,"level":18},"parser-optimization-techniques","Parser Optimization Techniques",{"id":26,"text":27,"level":18},"runtime-performance-monitoring","Runtime Performance Monitoring",{"id":29,"text":30,"level":18},"troubleshooting-performance-issues","Troubleshooting Performance Issues",{"id":32,"text":33,"level":18},"conclusion","Conclusion",[],[36,44,52],{"slug":37,"title":38,"description":39,"excerpt":40,"date":41,"category":9,"author":10,"keywords":42,"readingMinutes":43},"markdown-performance-optimization-best-practices-complete-guide","Markdown Performance Optimization and Best Practices: Complete Guide for High-Performance Documentation Systems","Master advanced Markdown performance optimization techniques for fast-loading documentation, efficient parsing, and scalable content systems. Learn caching strategies, asset optimization, and performance monitoring for Markdown-based sites.","Advanced Markdown performance optimization and best practices enable high-performance documentation systems that deliver exceptional user experiences while maintaining scalability across large…","2025-11-24","markdown performance optimization, markdown best practices, documentation performance, markdown parsing optimization, static site performance, markdown caching, content delivery optimization, markdown asset management",28,{"slug":45,"title":46,"description":47,"excerpt":48,"date":49,"category":9,"author":10,"keywords":50,"readingMinutes":51},"markdown-performance-optimization-complete-guide","Markdown Performance Optimization: Complete Guide for High-Volume Content Processing and Rendering Efficiency","Master advanced Markdown performance optimization techniques for large-scale content processing, rendering efficiency, and high-volume documentation systems. Learn caching strategies, parsing optimization, and performance monitoring for Markdown workflows.","Advanced Markdown performance optimization techniques enable high-volume content processing systems that deliver exceptional rendering speeds, efficient memory usage, and scalable processing…","2025-10-28","markdown performance optimization, markdown parsing performance, markdown rendering speed, markdown content caching, large scale markdown, markdown processing efficiency, markdown performance monitoring, markdown optimization techniques",22,{"slug":53,"title":54,"description":55,"excerpt":56,"date":57,"category":9,"author":10,"keywords":58,"readingMinutes":59},"markdown-table-performance-optimization-complete-guide","Markdown Table Performance Optimization and Responsive Design: Complete Guide for High-Performance Documentation and Data Display","Master advanced Markdown table performance optimization techniques for large datasets, responsive design patterns, and mobile-friendly data presentation. Learn table virtualization, lazy loading, and adaptive design strategies for documentation systems.","Advanced Markdown table performance optimization and responsive design techniques enable sophisticated data presentation systems that maintain performance across large datasets while providing…","2026-01-03","markdown table performance, responsive markdown tables, table optimization, large dataset tables, mobile markdown tables, table virtualization, adaptive table design, data presentation",18,1792184942510]