mirror of
https://github.com/xoofx/markdig.git
synced 2026-02-04 05:44:50 +00:00
[PR #608] [MERGED] Some CPU improvements #1137
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/xoofx/markdig/pull/608
Author: @MihaZupan
Created: 3/14/2022
Status: ✅ Merged
Merged: 3/19/2022
Merged by: @xoofx
Base:
master← Head:perf-march-2022-2📝 Commits (8)
9f651feProperly trim & cache FencedCodeBlock Info strings92385eeSet SkipLocalsInit for Markdigfe65c1bAdd & use ValueStringBuilder9ef5171Reduce type check and casting overheade16ed79Optimize StringLineGroup iteration58d7faeCleanup exit condition in Unescape2675b4dFixup FencedBlockParserBase nullability315ffd4Move InternalsVisibleTo from targets to non-signed csproj📊 Changes
32 files changed (+883 additions, -264 deletions)
View changed files
➕
src/Markdig.Tests/TestFencedCodeBlocks.cs(+46 -0)➕
src/Markdig.Tests/TestTransformedStringCache.cs(+102 -0)📝
src/Markdig/Extensions/AutoIdentifiers/AutoIdentifierExtension.cs(+12 -7)📝
src/Markdig/Extensions/JiraLinks/JiraLinkInlineParser.cs(+10 -4)📝
src/Markdig/Extensions/JiraLinks/JiraLinkOptions.cs(+6 -15)📝
src/Markdig/Extensions/Tables/PipeTableParser.cs(+1 -1)📝
src/Markdig/Helpers/EntityHelper.cs(+2 -3)📝
src/Markdig/Helpers/HtmlHelper.cs(+29 -28)📝
src/Markdig/Helpers/LinkHelper.cs(+63 -60)📝
src/Markdig/Helpers/StringBuilderExtensions.cs(+0 -7)📝
src/Markdig/Helpers/StringLineGroup.cs(+90 -55)📝
src/Markdig/Helpers/StringSlice.cs(+20 -0)➕
src/Markdig/Helpers/TransformedStringCache.cs(+130 -0)➕
src/Markdig/Helpers/ValueStringBuilder.cs(+197 -0)📝
src/Markdig/Markdig.csproj(+6 -1)📝
src/Markdig/Parsers/BlockProcessor.cs(+51 -26)📝
src/Markdig/Parsers/FencedBlockParserBase.cs(+32 -13)📝
src/Markdig/Parsers/HtmlBlockParser.cs(+3 -3)📝
src/Markdig/Parsers/IndentedCodeBlockParser.cs(+1 -1)📝
src/Markdig/Parsers/InlineProcessor.cs(+8 -2)...and 12 more files
📄 Description
FencedCodeBlock.InfoString& language-prefixed stringsValueStringBuilderoverStringBuilderCache.Local()ContainerBlock,LeafBlock,ParagraphBlockandContainerInlineby setting flags on the base type instead (this is a ~5% CPU win by removingS.R.CompilerServices.CastHelpers.IsInstanceOfClass).StringLineGroup.NextChar- very hot method forLinkHelperParsing this document with
PreciseSourceLocation:Before
After
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.