From b88b50eadf648ce767b6c5c597380279ad8b0dd7 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 11 Mar 2019 20:12:00 +0000 Subject: [PATCH] Optimize C to string converter in SpamSum context. --- SpamSumContext.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/SpamSumContext.cs b/SpamSumContext.cs index 81d9d0d87..3d72a01b3 100644 --- a/SpamSumContext.cs +++ b/SpamSumContext.cs @@ -421,16 +421,18 @@ namespace DiscImageChef.Checksums // Converts an ASCII null-terminated string to .NET string static string CToString(byte[] cString) { - StringBuilder sb = new StringBuilder(); + int count = 0; - for(int i = 0; i < cString.Length; i++) + // ReSharper disable once LoopCanBeConvertedToQuery + // LINQ is six times slower + foreach(byte c in cString) { - if(cString[i] == 0) break; + if(c == 0) break; - sb.Append(Encoding.ASCII.GetString(cString, i, 1)); + count++; } - return sb.ToString(); + return Encoding.ASCII.GetString(cString, 0, count); } struct RollState