diff options
| author | Berkan Diler <b.diler@gmx.de> | 2022-10-19 01:31:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-18 23:31:34 +0000 |
| commit | c40c3905e2836e8b105406430c33659a84c2e3ca (patch) | |
| tree | 4a1ed99ae42fc57a0d6288680a319e594729a18d /Ryujinx.HLE/HOS | |
| parent | a6cd044f0f675ee0bd9d3954228bbd3f2f992a22 (diff) | |
Avoid allocations in .Parse methods (#3760)
* Avoid allocations in .Parse methods
Use the Span overloads of the Parse methods when possible to avoid string allocations and remove one unnecessarry array allocation
* Avoid another string allocation
Diffstat (limited to 'Ryujinx.HLE/HOS')
| -rw-r--r-- | Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs | 2 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs | 10 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs | 3 |
3 files changed, 7 insertions, 8 deletions
diff --git a/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs b/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs index 1e621121..be5b7539 100644 --- a/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs +++ b/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs @@ -918,7 +918,7 @@ namespace Ryujinx.HLE.HOS.Diagnostics.Demangler return -1; } - return int.Parse(part.Substring(0, numberLength)); + return int.Parse(part.AsSpan(0, numberLength)); } private string ParseNumber(bool isSigned = false) diff --git a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs index 9dfa677c..fc0c0647 100644 --- a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs +++ b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs @@ -816,11 +816,11 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp Reserved = new Array57<byte>() }; - modelInfo.CharacterId = BinaryPrimitives.ReverseEndianness(ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.Substring(0, 4), NumberStyles.HexNumber)); - modelInfo.CharacterVariant = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.Substring(4, 2), NumberStyles.HexNumber); - modelInfo.Series = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.Substring(12, 2), NumberStyles.HexNumber); - modelInfo.ModelNumber = ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.Substring(8, 4), NumberStyles.HexNumber); - modelInfo.Type = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.Substring(6, 2), NumberStyles.HexNumber); + modelInfo.CharacterId = BinaryPrimitives.ReverseEndianness(ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(0, 4), NumberStyles.HexNumber)); + modelInfo.CharacterVariant = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(4, 2), NumberStyles.HexNumber); + modelInfo.Series = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(12, 2), NumberStyles.HexNumber); + modelInfo.ModelNumber = ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(8, 4), NumberStyles.HexNumber); + modelInfo.Type = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(6, 2), NumberStyles.HexNumber); context.Memory.Write(outputPosition, modelInfo); diff --git a/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs b/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs index d34f4cf8..e85d99c7 100644 --- a/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs +++ b/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs @@ -122,9 +122,8 @@ namespace Ryujinx.HLE.HOS.Tamper for (int nybbleIndex = 0; nybbleIndex < wordSize; nybbleIndex++) { int index = wordIndex * wordSize + nybbleIndex; - string byteData = word.Substring(nybbleIndex, 1); - instruction[index] = byte.Parse(byteData, NumberStyles.HexNumber, CultureInfo.InvariantCulture); + instruction[index] = byte.Parse(word.AsSpan(nybbleIndex, 1), NumberStyles.HexNumber, CultureInfo.InvariantCulture); } } |
