InCerryGit opened a new pull request, #724:
URL: https://github.com/apache/rocketmq-clients/pull/724

   <!-- Please make sure the target branch is right. In most case, the target 
branch should be `master`. -->
   
   ### Which Issue(s) This PR Fixes
   
   Optimization message id generator performance.
   
   ### Brief Description
   
   We are using RocketMQ for high-throughput message sending and receiving and 
have identified some performance bottlenecks. This is one of a series of 
performance optimization pull requests aimed at improving the efficiency of the 
message ID generator. Based on the following benchmark tests, we can conclude 
that there has been an approximate 50% reduction in time consumption and a 70% 
reduction in memory usage.
   
   ```
   BenchmarkDotNet v0.13.12, Windows 11 
(10.0.22631.3296/23H2/2023Update/SunValley3)
   Intel Core i7-14700K, 1 CPU, 28 logical and 20 physical cores
   .NET SDK 8.0.202
     [Host]     : .NET 8.0.3 (8.0.324.11423), X64 RyuJIT AVX2
     DefaultJob : .NET 8.0.3 (8.0.324.11423), X64 RyuJIT AVX2
   
   
   | Method     | Mean     | Error    | StdDev   | Gen0   | Allocated |
   |----------- |---------:|---------:|---------:|-------:|----------:|
   | Next       | 35.24 ns | 0.274 ns | 0.243 ns | 0.0088 |     152 B |
   | BeforeNext | 72.86 ns | 0.567 ns | 0.502 ns | 0.0426 |     736 B |
   ```
   
   Additionally, the strong dependency of the MessageIdGenerator on time has 
been decoupled by using the TimeProvider from the .NET base class library. The 
abstraction of IUtilities decouples the strong dependency on the Utilities 
static class, facilitating better unit testing and ensuring code quality.
   
   ### How Did You Test This Change?
   
   Unit tests were created using the same parameters to record the Ids 
generated by the old Next method, to compare and verify the consistency between 
the new and old result methods.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to