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 <[email protected]>
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();
}