Reduce string allocations in SetFromMnemonic

This commit is contained in:
Morilli 2024-03-12 02:17:02 +01:00
parent 17ed62b39e
commit fdf63900b6
1 changed files with 10 additions and 5 deletions

View File

@ -86,21 +86,26 @@ namespace BizHawk.Client.Common
{ {
if (!string.IsNullOrWhiteSpace(mnemonic)) if (!string.IsNullOrWhiteSpace(mnemonic))
{ {
var trimmed = mnemonic.Replace("|", "");
var iterator = 0; var iterator = 0;
foreach (var key in ControlsOrdered) foreach (var key in ControlsOrdered)
{ {
while (mnemonic[iterator] == '|') iterator++;
if (key.IsBool) if (key.IsBool)
{ {
_myBoolButtons[key.Name] = trimmed[iterator] != '.'; _myBoolButtons[key.Name] = mnemonic[iterator] != '.';
iterator++; iterator++;
} }
else if (key.IsAxis) else if (key.IsAxis)
{ {
var commaIndex = trimmed.Substring(iterator).IndexOf(','); var commaIndex = mnemonic.IndexOf(',', iterator);
var temp = trimmed.Substring(iterator, commaIndex); #if NET6_0_OR_GREATER
var val = int.Parse(temp.Trim()); var val = int.Parse(mnemonic.AsSpan(iterator, commaIndex));
#else
var axisValueString = mnemonic.Substring(iterator, commaIndex);
var val = int.Parse(axisValueString);
#endif
_myAxisControls[key.Name] = val; _myAxisControls[key.Name] = val;
iterator += commaIndex + 1; iterator += commaIndex + 1;