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();
         }

Reply via email to