Optimize string memory usage. Use Spans and StringBuilders where possible (#3933)

* Optimize string memory usage. Use ReadOnlySpan<char> and StringBuilder where possible.

* Fix copypaste error

* Code generator review fixes

* Use if statement instead of switch

* Code style fixes

Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>

* Another code style fix

* Styling fix

Co-authored-by: Mary-nyan <thog@protonmail.com>

* Styling fix

Co-authored-by: gdkchan <gab.dark.100@gmail.com>

Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Co-authored-by: Mary-nyan <thog@protonmail.com>
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
This commit is contained in:
Andrey Sukharev 2023-01-19 01:25:16 +03:00 committed by GitHub
parent f449895e6d
commit ae4324032a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 118 additions and 81 deletions

View file

@ -4,9 +4,10 @@ namespace Ryujinx.Horizon.Generators
{
class CodeGenerator
{
private const string Indent = " ";
private const int IndentLength = 4;
private readonly StringBuilder _sb;
private string _currentIndent;
private int _currentIndentCount;
public CodeGenerator()
{
@ -32,12 +33,15 @@ namespace Ryujinx.Horizon.Generators
public void IncreaseIndentation()
{
_currentIndent += Indent;
_currentIndentCount++;
}
public void DecreaseIndentation()
{
_currentIndent = _currentIndent.Substring(0, _currentIndent.Length - Indent.Length);
if (_currentIndentCount - 1 >= 0)
{
_currentIndentCount--;
}
}
public void AppendLine()
@ -47,7 +51,8 @@ namespace Ryujinx.Horizon.Generators
public void AppendLine(string text)
{
_sb.AppendLine(_currentIndent + text);
_sb.Append(' ', IndentLength * _currentIndentCount);
_sb.AppendLine(text);
}
public override string ToString()