From fdf63900b62477aaedf9ee5e85efc79a9881bd47 Mon Sep 17 00:00:00 2001 From: Morilli <35152647+Morilli@users.noreply.github.com> Date: Tue, 12 Mar 2024 02:17:02 +0100 Subject: [PATCH] Reduce string allocations in SetFromMnemonic --- .../movie/bk2/Bk2Controller.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2Controller.cs b/src/BizHawk.Client.Common/movie/bk2/Bk2Controller.cs index e248490608..552bda4102 100755 --- a/src/BizHawk.Client.Common/movie/bk2/Bk2Controller.cs +++ b/src/BizHawk.Client.Common/movie/bk2/Bk2Controller.cs @@ -86,21 +86,26 @@ namespace BizHawk.Client.Common { if (!string.IsNullOrWhiteSpace(mnemonic)) { - var trimmed = mnemonic.Replace("|", ""); var iterator = 0; foreach (var key in ControlsOrdered) { + while (mnemonic[iterator] == '|') iterator++; + if (key.IsBool) { - _myBoolButtons[key.Name] = trimmed[iterator] != '.'; + _myBoolButtons[key.Name] = mnemonic[iterator] != '.'; iterator++; } else if (key.IsAxis) { - var commaIndex = trimmed.Substring(iterator).IndexOf(','); - var temp = trimmed.Substring(iterator, commaIndex); - var val = int.Parse(temp.Trim()); + var commaIndex = mnemonic.IndexOf(',', iterator); +#if NET6_0_OR_GREATER + 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; iterator += commaIndex + 1;