From b617bcd5f1a0a8894dc07bd0bf32be0552578a99 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. --- DiscImageChef.Checksums/SpamSumContext.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/DiscImageChef.Checksums/SpamSumContext.cs b/DiscImageChef.Checksums/SpamSumContext.cs index 81d9d0d87..3d72a01b3 100644 --- a/DiscImageChef.Checksums/SpamSumContext.cs +++ b/DiscImageChef.Checksums/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