aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
diff options
context:
space:
mode:
authorAndrey Sukharev <SukharevAndrey@users.noreply.github.com>2023-01-19 01:25:16 +0300
committerGitHub <noreply@github.com>2023-01-18 22:25:16 +0000
commitae4324032a48ee08a808354673f47536e76759d0 (patch)
tree90c7c6aceb14d095761a257a41e7dc6882d30d73 /Ryujinx.Graphics.Shader/Decoders/InstTable.cs
parentf449895e6d8af90f727de6590fd6120038c73986 (diff)
Optimize string memory usage. Use Spans and StringBuilders where possible (#3933)1.1.572
* 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>
Diffstat (limited to 'Ryujinx.Graphics.Shader/Decoders/InstTable.cs')
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/InstTable.cs11
1 files changed, 6 insertions, 5 deletions
diff --git a/Ryujinx.Graphics.Shader/Decoders/InstTable.cs b/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
index 911f1581..eaa77930 100644
--- a/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
+++ b/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
@@ -1,4 +1,5 @@
using Ryujinx.Graphics.Shader.Instructions;
+using System;
namespace Ryujinx.Graphics.Shader.Decoders
{
@@ -329,18 +330,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
private static void Add(string encoding, InstName name, InstEmitter emitter, InstProps props = InstProps.None)
{
- encoding = encoding.Substring(0, EncodingBits);
+ ReadOnlySpan<char> encodingPart = encoding.AsSpan(0, EncodingBits);
- int bit = encoding.Length - 1;
+ int bit = encodingPart.Length - 1;
int value = 0;
int xMask = 0;
int xBits = 0;
- int[] xPos = new int[encoding.Length];
+ int[] xPos = new int[encodingPart.Length];
- for (int index = 0; index < encoding.Length; index++, bit--)
+ for (int index = 0; index < encodingPart.Length; index++, bit--)
{
- char chr = encoding[index];
+ char chr = encodingPart[index];
if (chr == '1')
{