Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ISSUE #9014] performance optimization--refacte TpsMonitorPoint #9021

Merged
merged 6 commits into from Aug 26, 2022

Conversation

YunWZ
Copy link
Contributor

@YunWZ YunWZ commented Aug 23, 2022

Please do not create a Pull Request without creating an issue first.

What is the purpose of the change

performance optimization for #9014

Brief changelog

Refact TpsMonitorPoint methods:

  • getTrimMillsOfSecond,
  • getTrimMillsOfMinute,
  • getTrimMillsOfHour,
  • getTimeFormatOfSecond.

Verifying this change

pass test unit and jmh test

JMH banchmark

banchmark platform info:

OS: macOS Monterey 12.5.1
CPU: M1 Pro
Memory: 16GB

banchmark test

@BenchmarkMode({Mode.Throughput, Mode.AverageTime})
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@State(Scope.Benchmark)
@Warmup(iterations = 5, time = 100, timeUnit = TimeUnit.MICROSECONDS)
@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS)
@Fork(1)
public class JmhTpsMonitorPoint {
    
    @Benchmark
    public void measureGetTrimMillsOfSecond() {
        TpsMonitorPoint.getTrimMillsOfSecond(1661235833111L);
    }
    
    @Benchmark
    public void measureGetTrimMillsOfMinute() {
        TpsMonitorPoint.getTrimMillsOfMinute(1661235833111L);
    }
    
    @Benchmark
    public void measureGetTrimMillsOfHour() {
        TpsMonitorPoint.getTrimMillsOfHour(1661235833111L);
    }
    
    @Benchmark
    //@Threads(5)
    public void measureGetTimeFormatOfSecond() {
        TpsMonitorPoint.getTimeFormatOfSecond(1661235833111L);
    }
}

banchmark result

Befor refacting:

Benchmark                                         Mode  Cnt    Score     Error   Units
JmhTpsMonitorPoint.measureGetTimeFormatOfSecond  thrpt    5    0.001 ±   0.001  ops/ns
JmhTpsMonitorPoint.measureGetTrimMillsOfHour     thrpt    5    0.008 ±   0.001  ops/ns
JmhTpsMonitorPoint.measureGetTrimMillsOfMinute   thrpt    5    0.007 ±   0.001  ops/ns
JmhTpsMonitorPoint.measureGetTrimMillsOfSecond   thrpt    5    0.013 ±   0.001  ops/ns
JmhTpsMonitorPoint.measureGetTimeFormatOfSecond   avgt    5  926.852 ± 178.963   ns/op
JmhTpsMonitorPoint.measureGetTrimMillsOfHour      avgt    5  129.973 ±  14.357   ns/op
JmhTpsMonitorPoint.measureGetTrimMillsOfMinute    avgt    5  137.669 ±  10.380   ns/op
JmhTpsMonitorPoint.measureGetTrimMillsOfSecond    avgt    5   77.030 ±  17.750   ns/op

After refacting:

Benchmark                                         Mode  Cnt    Score    Error   Units
JmhTpsMonitorPoint.measureGetTimeFormatOfSecond  thrpt    5    0.004 ±  0.001  ops/ns
JmhTpsMonitorPoint.measureGetTrimMillsOfHour     thrpt    5    2.362 ±  0.044  ops/ns
JmhTpsMonitorPoint.measureGetTrimMillsOfMinute   thrpt    5    2.345 ±  0.201  ops/ns
JmhTpsMonitorPoint.measureGetTrimMillsOfSecond   thrpt    5    2.369 ±  0.058  ops/ns
JmhTpsMonitorPoint.measureGetTimeFormatOfSecond   avgt    5  241.058 ± 29.693   ns/op
JmhTpsMonitorPoint.measureGetTrimMillsOfHour      avgt    5    0.421 ±  0.002   ns/op
JmhTpsMonitorPoint.measureGetTrimMillsOfMinute    avgt    5    0.422 ±  0.005   ns/op
JmhTpsMonitorPoint.measureGetTrimMillsOfSecond    avgt    5    0.419 ±  0.004   ns/op

The complete banchmark result:
Before
Optimized

Follow this checklist to help us incorporate your contribution quickly and easily:

  • Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
  • Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
  • Run mvn -B clean package apache-rat:check findbugs:findbugs -Dmaven.test.skip=true to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test to make sure integration-test pass.

@YunWZ YunWZ requested a review from KomachiSion August 24, 2022 07:27
@KomachiSion KomachiSion merged commit 0ac96e1 into alibaba:develop Aug 26, 2022
@KomachiSion KomachiSion added this to the 2.1.2 milestone Aug 26, 2022
@YunWZ YunWZ deleted the develop-issue#9014 branch August 26, 2022 04:29
li-xiao-shuang pushed a commit that referenced this pull request Aug 31, 2022
* Add exception detail stacks when connect to server failed.

* [ISSUE#8653]Fix health check bug (#8639)

* fix health bug.

* fix health bug.

* fix health bug.

* test update

* format code

* 注释

* check service exist

* check service exist

* test fail

* user group()

* add unit test.

* add unit test.

* add unit test.

* add unit test.

* add unit test.

* add unit test.

* Add comment for config aspect.

* [ISSUE#8481]Unified TRACE capacity building  (#8805)

* [ISSUE#8481]Unified TRACE capacity building

* [ISSUE#8481]Unified TRACE capacity building
1. Event type add to traceEvent.
2. The event about instance add instancePort.
3. Add health check type to healthChangeEvent.
4. Other fixup.

* Add Generic Type for Simple Cache Map (#8812)

* import config file auth fail (#8844)

* import config file auth fail

* run ci

* run ci2

* Feat/calculate ip count when use batchregister (#8858)

Feat/calculate ip count when use batchregister

* [ISSUE #8880] add a request exception handler (#8881)

* [ISSUE #8880] add a request exception handler

Close #8880

* [ISSUE #8880] retry ci

* Upgrade to 2.1.1 (#8899)

* [ISSUE#8910] bug fix calcu ipCount (#8911)

* bug fix calcu ipCount

* update logic

* judge endpoint (#8933)

* [ISSUE #8925] fix that the value of hasQueryString is always false (#8927)

Close #8925

* [ISSUES#8905]simplify some code (#8908)

* refactor: 💡 update console-ui theme (#8951)

✅ Closes: #8950

* Update IoUtils.java (#8948)

An IOException has been catch,so throws IOException Is invalid

* [ISSUE #8931] Fix bug :BatchInstanceData cannot Serializable question (#8940)

* [fix] fix BatchInstanceData cannot Serializable question

* fix update serialVersionUID auto generate

* [ISSUE #8925] fix that the replaceAll operation is invalid (#8929)

Close #8925

* fix #8947. (#8959)

* judge endpoint

* add some junit test (#8966)

* add some junit test

* fix some junit

* add license

* optimize: internationalization of product description content on landing pages (#8956)

* Improve code specifications. (#8965)

Flip the call to equals method to avoid null pointer exception.

* fix LookupFactoryTest  ut / ci (#8985)

* fix ci

* run ci

* check cla report

* check style

* add some auth plugin test (#8988)

* add some auth plugin test

* ru ci

* remove namespaceShowName uniqueness check (#8989)

* add unit test for ReflectUtils (#8999)

* add unit test for ReflectUtils

* reformat code

* [ISSUE #8993]Close input stream and output stream by try with resource[nacos-common] (#8997)

* [ISSUE #8993]Close input stream and output stream by try with resource[nacos-common]

* [ISSUE #8993]Close input stream and output stream by try with resource[nacos-common]

* [ISSUE #8993]Close input stream and output stream by try with resource[nacos-common]

* add some utils UT (#9006)

add some utils UT

* Fix grpc push data not filter by cluster. (#9019)

* [#344] rename initialization sql files (#8969)

* [ISSUE #9014] performance optimization--refacte TpsMonitorPoint (#9021)

* performance optimization

* fix check style

* fix test unit

* fix test unit for `getTimeFormatOfSecond` method.

* fix unit test  for LimiterTest.

* fix error usage case for asserEquals method;eliminate interactions between test methods

* Fix spelling mistakes. (#9026)

* [ISSUE #9013] enhance grpc client (#9017)

* fix issue #9013

* reformat code style

* reformat code style

* reformat code style

* reformat code style

* reformat code style

* reformat code style

* reformat code style

* change config name

* do some enhance

* add queue size to configProperties

* reformat code style

* Change configuration load order

* Fix ServerListMgr is not shutdown. (#9048)

* set server.error.include-message to ALWAYS (#9045)

* [ISSUE #8934] add header back after convert request to jsonBytes (#8935)

* [ISSUE #9023] fix corner case config dataId 'cipher-' that cannot create (#9024)

* [ISSUE #9023] fix corner case config dataId 'cipher-' that cannot create

* [ISSUE #9023] remove unused import

* [ISSUE #9023] PMD fix

* [ISSUE #9023] add comments

* [ISSUE #9023] should return first token instead of any

* [ISSUE #9023] add more EncryptionHandler ut

* [ISSUE #9023] fix style

* [ISSUE #9023] fix style, keep indentation in blank line

Co-authored-by: KomachiSion <xiweng.yy@alibaba-inc.com>
Co-authored-by: 胡俊 <510830970@qq.com>
Co-authored-by: MajorHe1 <53824889+MajorHe1@users.noreply.github.com>
Co-authored-by: GuiShao <zhupeng.zhu@alibaba-inc.com>
Co-authored-by: ZhangShenao <15201440436@163.com>
Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com>
Co-authored-by: onewe <admin@onew.me>
Co-authored-by: 胡俊 <hujun3@xiaomi.com>
Co-authored-by: liushaoyu-soft <455028117@qq.com>
Co-authored-by: heimanba <371510756@qq.com>
Co-authored-by: 无处不在 <42382506+wuchubuzai2018@users.noreply.github.com>
Co-authored-by: Weizhan Yun <yunweizhan@gmail.com>
Co-authored-by: liaochuntao <liaochuntao@live.com>
Co-authored-by: @xiaochangbai <704566072@qq.com>
Co-authored-by: shiherua <56618514+shiherua@users.noreply.github.com>
Co-authored-by: Karson <karsontao@hotmail.com>
Co-authored-by: yjqg6666 <jinking.this@gmail.com>
Co-authored-by: 阿魁 <670569467@qq.com>
Co-authored-by: wuwen <wuwen.55@aliyun.com>
Co-authored-by: hutt <200714916@qq.com>
@YunWZ YunWZ restored the develop-issue#9014 branch October 23, 2022 13:44
@YunWZ YunWZ deleted the develop-issue#9014 branch January 9, 2023 15:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants