Skip to content

Fix and optimize CodeBlock.cs - #13

Merged
KubaZ2 merged 7 commits into
NetCordDev:alphafrom
budgetdevv:codeblock_fix_and_optimize
Jan 17, 2024
Merged

Fix and optimize CodeBlock.cs#13
KubaZ2 merged 7 commits into
NetCordDev:alphafrom
budgetdevv:codeblock_fix_and_optimize

Conversation

@budgetdevv

@budgetdevv budgetdevv commented Jan 12, 2024

Copy link
Copy Markdown
Contributor

Bug fixes:
"```````" is no longer treated as codeblock
• Added new optional parameter strictMode which defaults to true. strictMode incur some overhead to ensure that in edge-cases such as "```csharp```", "csharp" will become Code instead of Formatter.

Performance optimizations:
• Reduced code size by merging return paths
• Greatly optimized comparision of characters

Basic test code:
https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEUCuA7AHwAEAmARgFgAoIgBgAIiyA6AEQEsBDAczwgGcM7MP2YBhCABMYAQTycANgE9+7fgG5qdRiwBK+IQFsY4iIYAO7BTCgBlGwDdhMDdWoPOUevxxgwL/noAXnoJaQAhBQgwAGtmABUoJQAFT34YAAoAIgADPJEAC09zAB08PJystHoIHAx6Dy8wYABKTSotMgBODIASLNtff35+EHoAbx8/AIBfegJ6ADFoQ04MDBsx8ebmZahV9Zs5hbCYLZ3Tmay2tyop4cCQ08jouMSUtMzc/P4iqFK8GUKlUanV6M0bh0aN0+gMhgEtvdZvMlis1hsoOdgLs0YcoMdQlIzhMLkSrpDqEiRsFCREorEEklUlB0tkKoVimUABrA6q1eoQ9qdHr9QbTEaI+EjAl7A4YrE4/boo4o04Ky7XIV3KWPWkwF4M97M1nfHIc/4APx5eRB/PBrS1TBFcPFowmVP4Mtx8pJ2NlyvxqqJ6rJmtuHppz3pbyZnzZeSBNr5YMFtydsLFD0lrq9SrxCv9eIJat9pmk5K1EaeRINMY+LK+FV5oIFDrTMNFOuzDwraYAzIwSHra9RxtR6BPGAOmAxThN6NwYBh1PQZuPJ0Rp2RaAB+VF5jHzxfL1e3SdT4fRjIz8FE6ozvcAM29NhpeBwCgULXXE7HVHP55ziEkDSO0AGToWh4hM+B42GBk5rlC54ANoALJLgUUgAJIWAoGToRgmGSDh5gKAA8uYQgQHgogyNw3CwCM7AODAWF4Ao7B4Jx3AtAAuvQAD0An0GxHF4DA3gQPQhFrN4GBQMIGCoUS9DAFAnB4GABQuOCGmqRJMAcYYnFrDAkj0Owj4WfUaj0Jwt40RgGkYD+F5MEgqkQBACj0Eaca6DAnCSGR7FKLY5gaQAPFpngAHzSTACAYNUyEAHIQBgqUfgoADq2l4Bk8k4DAfEtperx7iB+rRtUwBeT5ggKWASkqSERUla5f7gROkCOToDDmLAj7sAggyPsNCA0qaWTweBrnnlVtZvtls0AfNk6NBZ/BRq8NIbElzC2E5UAYPwOXsIRGSDTAE1jRNLT0AAZI9CUHQAongkhnRdBRXUNI13SND3Pa9GDMAAMjAeDcIR9CxSEpqJpUENQzDBSree60TpZ9AZAAhGoO2xN+/7dV13XntwGVSQFy5Y6epNzYzAEPvQMFyq+ITvp+GOTvt9RtYlGDIddt04ONI0o9DhHMMwAB6osA+LE1S2jvG8xOm3DSymUwAA7uDnESYLB1sdICBkY+GQAORlNbkIU5jzPnjjGTa4IqX64b4n0HjIRwGQJMU+MjvdfT54BUFIXKOFUUxVA8XswGsd4HtQvIbL7u6wbRvq+HYfO91MGBVpuObWAFmp0neIp0HocTPn4GbWoMj8GA7DsDICjmEUWXGE1NLx8wWH8K37fsJDeJkVAHDcBdGRgA79cU43AGuy3bcd13PecH3NjCPMCwV0EITWwA1Nbh/gsEp9wPbq/nuTy/gb1QjvjAGuO4hz8Fz/E5UxgKSmYAif3PN/euq9+ZpySshN2L47ARTwKrWGZ96CB1lnnQuTNl6uzxo1RSylpBXzxvzYeZ0CgXRgLHfwGQWh11Dk/Z+1coJs3gSnBIEAjoKWhrQ0BCFqAAEghECNXoZdIq9GHLygdBNhiC+ETnAeBRRa0sH0GARKemi1oxvn1oVIWHCuHcVodUZhNgl7YO6rTEA9MiAAHYtpExiKtRCrlNw6A8o4+gxpMiR2CqFFO0U/jxX5vQhuqjXZ+QbHopKyZ6jlxrNGOhq87G3jpK8T+YiYCQIKFACAet6DiXyYWN6CB/CUXYNRWEYgNJ8HqBFBs9BrbjHkMYCAVtHEtBmNbZgYZmYuOZm4iALEoAKSITeeInD5JGIekEeK/QKjjEgkcMo4xLjAnaDMIAA

Bug Fixes:
• "```````" is no longer treated as codeblock
• "```csharp```" now treat "csharp" as code, not formatter. This may fail if strictMode is set to false

Performance optimization:
• Reduced code size by merging return paths
• Greatly optimized comparision of characters

Test:

https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEUCuA7AHwAEAmABgFgAoUgRmqLIAIjaA6AEQEsBDAczwQAzhi5ghbAMIQAJjACCeHgBsAnkK5CA3NWoA3HlCZCcYMDCFCmAXibS5AIWUQwAazYAVKKoAKhoTAAFABEAAbh4gAWhgAOADp44aHBaEwQOBhMBkZgwACUOlQMtACcgQAkwQDKpuaWIEwA3iZmFkIAvkwETABi0AC2PBgYMFANjblsfVCDw6Od3fYw45NL7cEFulQtdVa2S04u7l6+/kFhEULRUPF4CUkpaRlMuZtFNKUV1bVt4zttC16AyGIzGTUm01moMBSxWwCkshg6ze1H+lhsdkRhzcnm8figARCSSisQSAA0Hql0plXoVimVKjVWvUmmiOl0gTMQaM4VNgXMoDDEby1hs6dsfuj9ljnDiTvjCRdQvdwo9qS98uLWAzvsyhH9JezupDuWCJvCTQKhXIRYjkeK2RiDrLjnizkSkqqqc9aVttV8mbsDXr7X6AMwsEiYxwu6iNahMRMsCOsZhLJpMPgwDBaJjtBNJogp2hkAD8nKhowzWZzea2SeT0Zg2NcgVTL0RqVT5YAZvzQRi8DhlMo8gXE/GqA2G+nbJA5IVp0nLQPbH2uQLF0n8+8G0WWLQkExgBAIMomPL3QAlGA8GQAeTwaiqMR4eAAPGBrgA+JgjBAYKkADaAByEAYCBw7KAA6pEMB4IEGC4DAeQALpPJkzpHOW87Ni6qQnmexhIWIGAALKIhiSE4Ch45NHRDa4S2g5QeKS6JtkTCaFhbhUTAAFsFUGCGBgQjQVwGCRB6yR5EwABkcl/vxGBsAAongMhiRJUlKhs8mKf+KkADLwXwklMN+thKiqyRsCZeBmZEW5LgxSZcD2TCBAAhNxMpHGOU7sZO7HTnw4EQEwN45q5iY7iFMUHmWTDrpWRi2EOI7OdOhl8QBQFhmwbAAHphqhWUNpxPZcASEEwAA7kZXB4DAuUqQAkhp/H3j2gQAOQJL1bwhQ2CXuZ5VU1SB9WNc1TBebYcC0AFIWNMN7EJQ2N53o+z6vh+X6GL+KWmi+b6tUBhUTSIU0NU1MBlRt62BWt663l+nmcWAXF4Ml/ajKdeDLWt9HPcDHGGFxQjyEIYBcFw8jKDE0SQf0oxiBiB1QGwbVQzDcMmQK95QNwfASYEYBDWDT1U25HmBJo0Ow/DiPIzgqNQOjBDdF91i2L1ADUvVdNzNh83Ag2PUuwU09OkB4KIQ4wOVwNxTLI2g2DYUYBFgZtMrS6q2tktKQB52BMdAoA3ZpnmfzTBLYVD0a9TwNjd5Igc2A5GUVzc2GdjYmRBJMCneYgR5EDa3SzTFurr9G6glbHgQEJHMOeH+vTjuACQufZ8bMDKAExvR1TOVrn9UAA5nDaG1nCUJbr9QJUxLqDvViHKZ4KckeneSpLHoyUy5zuJlFIAJUQADskM8a4WU7nR+6sEec9MAqQRbQ+T6qADn4/ibGCRyDIVu5eBJBIZ3qZJ9fluBHxvTx2MZHJnhfF6P2WRFAEB1UwzV/0tKpBA5gYiiAgAhSokg3yCEyK+C+TBeqNCUKjCAPU555HaL1NgYo6KL1BvuCAehRgczkIlC8Pc058HDjYX8lQkiNBXPMBIjQ1gPEKO0IAA
@budgetdevv

Copy link
Copy Markdown
Contributor Author

It is possible to further improve performance via SIMD, but that will be future work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants