This is an automated email from the ASF dual-hosted git repository. lizhanhui pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
The following commit(s) were added to refs/heads/master by this push: new d1a7701d 使用.net5中的新方法减少分配,优化性能 (#747) d1a7701d is described below commit d1a7701d15f823e4ab2d91a5c5f8e856f10eb3a2 Author: colprog <colp...@gmail.com> AuthorDate: Tue May 28 14:23:38 2024 +0800 使用.net5中的新方法减少分配,优化性能 (#747) --- csharp/rocketmq-client-csharp/MessageView.cs | 2 +- csharp/rocketmq-client-csharp/Utilities.cs | 37 +++++++++++++--------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/csharp/rocketmq-client-csharp/MessageView.cs b/csharp/rocketmq-client-csharp/MessageView.cs index 4d8824d4..52b821ac 100644 --- a/csharp/rocketmq-client-csharp/MessageView.cs +++ b/csharp/rocketmq-client-csharp/MessageView.cs @@ -137,7 +137,7 @@ namespace Org.Apache.Rocketmq { case Proto.Encoding.Gzip: { - body = Utilities.DecompressBytesGzip(message.Body.ToByteArray()); + body = Utilities.DecompressBytesGzip(raw); break; } case Proto.Encoding.Identity: diff --git a/csharp/rocketmq-client-csharp/Utilities.cs b/csharp/rocketmq-client-csharp/Utilities.cs index 831ab835..14e159e1 100644 --- a/csharp/rocketmq-client-csharp/Utilities.cs +++ b/csharp/rocketmq-client-csharp/Utilities.cs @@ -34,8 +34,6 @@ namespace Org.Apache.Rocketmq private static readonly string HostName = System.Net.Dns.GetHostName(); private static readonly byte[] RandomMacAddressBytes = Enumerable.Range(0, 6).Select(_ => (byte)new Random().Next(256)).ToArray(); - private static readonly ThreadLocal<MD5> Md5 = new ThreadLocal<MD5>(MD5.Create); - private static readonly ThreadLocal<SHA1> Sha1 = new ThreadLocal<SHA1>(SHA1.Create); public const int MasterBrokerId = 0; @@ -85,16 +83,24 @@ namespace Org.Apache.Rocketmq #if NET5_0_OR_GREATER public static string ComputeMd5Hash(byte[] data) { - var hashBytes = Md5.Value.ComputeHash(data); + var hashBytes = MD5.HashData(data); return Convert.ToHexString(hashBytes); } public static string ComputeSha1Hash(byte[] data) { - var hashBytes = Sha1.Value.ComputeHash(data); + var hashBytes = SHA1.HashData(data); return Convert.ToHexString(hashBytes); } + + public static string ByteArrayToHexString(byte[] bytes) + { + return Convert.ToHexString(bytes); + } #else + private static readonly ThreadLocal<MD5> Md5 = new ThreadLocal<MD5>(MD5.Create); + private static readonly ThreadLocal<SHA1> Sha1 = new ThreadLocal<SHA1>(SHA1.Create); + public static string ComputeMd5Hash(byte[] data) { var hashBytes = Md5.Value.ComputeHash(data); @@ -106,6 +112,11 @@ namespace Org.Apache.Rocketmq var hashBytes = Sha1.Value.ComputeHash(data); return BitConverter.ToString(hashBytes).Replace("-", ""); } + + public static string ByteArrayToHexString(byte[] bytes) + { + return BitConverter.ToString(bytes).Replace("-", ""); + } #endif private static string DecimalToBase36(long decimalNumber) @@ -122,20 +133,6 @@ namespace Org.Apache.Rocketmq return result; } - public static string ByteArrayToHexString(byte[] bytes) - { - var result = new StringBuilder(bytes.Length * 2); - const string hexAlphabet = "0123456789ABCDEF"; - - foreach (var b in bytes) - { - result.Append(hexAlphabet[(int)(b >> 4)]); - result.Append(hexAlphabet[(int)(b & 0xF)]); - } - - return result.ToString(); - } - public static byte[] CompressBytesGzip(byte[] src, CompressionLevel level) { using (var ms = new MemoryStream()) @@ -152,8 +149,8 @@ namespace Org.Apache.Rocketmq public static byte[] DecompressBytesGzip(byte[] src) { var inputStream = new MemoryStream(src); - var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress); - var outputStream = new MemoryStream(); + using var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress); + using var outputStream = new MemoryStream(); gzipStream.CopyTo(outputStream); return outputStream.ToArray(); }