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

dayjs.diff improve performance #2244

Merged
merged 2 commits into from
Jun 22, 2023
Merged

dayjs.diff improve performance #2244

merged 2 commits into from
Jun 22, 2023

Conversation

Qquanwei
Copy link
Contributor

@Qquanwei Qquanwei commented Feb 21, 2023

在高频场景下 dayjs.diff 会成为性能瓶颈, 发现在进行 dayjs.diff(time, 'day') 计算时会有无效的一些计算,于是优化了在进行 diff day 场景下的性能

image

test case

const dayjs =  require('./dayjs.min.js');

let startTime = Date.now();
let endTime = Date.now() + 30 * 24 * 60 * 60 * 1000;

for(let i = 0; i < 100000; ++i) {
    dayjs(startTime).diff(endTime, 'day');
}

before

image

after

image

执行时间由 1.35s/100000次 提升到 0.2s/100000次

src/index.js Outdated Show resolved Hide resolved
@codecov
Copy link

codecov bot commented Apr 17, 2023

Codecov Report

Merging #2244 (a43d1b9) into dev (b87aa0e) will not change coverage.
The diff coverage is 100.00%.

❗ Current head a43d1b9 differs from pull request most recent head 209d694. Consider uploading reports for the commit 209d694 to get more accurate results

@@            Coverage Diff            @@
##               dev     #2244   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          183       183           
  Lines         2111      2137   +26     
  Branches       555       562    +7     
=========================================
+ Hits          2111      2137   +26     
Impacted Files Coverage Δ
src/index.js 100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@Qquanwei
Copy link
Contributor Author

Qquanwei commented May 9, 2023

可以合了么

@iamkun iamkun merged commit 33c80e1 into iamkun:dev Jun 22, 2023
@iamkun iamkun mentioned this pull request Jun 22, 2023
github-actions bot pushed a commit that referenced this pull request Jul 1, 2023
## [1.11.9](v1.11.8...v1.11.9) (2023-07-01)

### Bug Fixes

* Add null to min and max plugin return type ([#2355](#2355)) ([62d9042](62d9042))
* check if null passed to objectSupport parser ([#2175](#2175)) ([013968f](013968f))
* dayjs.diff improve performance ([#2244](#2244)) ([33c80e1](33c80e1))
* dayjs(null) throws error, not return dayjs object as invalid date ([#2334](#2334)) ([c79e2f5](c79e2f5))
* objectSupport plugin causes an error when null is passed to dayjs function (closes [#2277](#2277)) ([#2342](#2342)) ([89bf31c](89bf31c))
* Optimize format method ([#2313](#2313)) ([1fe1b1d](1fe1b1d))
* update Duration plugin add/subtract take into account days in month ([#2337](#2337)) ([3b1060f](3b1060f))
* update MinMax plugin 1. ignore the 'null' in args 2. return the only one arg ([#2330](#2330)) ([3c2c6ee](3c2c6ee))
@github-actions
Copy link

github-actions bot commented Jul 1, 2023

🎉 This PR is included in version 1.11.9 🎉

The release is available on:

Your semantic-release bot 📦🚀

BePo65 pushed a commit to BePo65/dayjs that referenced this pull request Sep 20, 2023
## [1.11.9](iamkun/dayjs@v1.11.8...v1.11.9) (2023-07-01)

### Bug Fixes

* Add null to min and max plugin return type ([iamkun#2355](iamkun#2355)) ([62d9042](iamkun@62d9042))
* check if null passed to objectSupport parser ([iamkun#2175](iamkun#2175)) ([013968f](iamkun@013968f))
* dayjs.diff improve performance ([iamkun#2244](iamkun#2244)) ([33c80e1](iamkun@33c80e1))
* dayjs(null) throws error, not return dayjs object as invalid date ([iamkun#2334](iamkun#2334)) ([c79e2f5](iamkun@c79e2f5))
* objectSupport plugin causes an error when null is passed to dayjs function (closes [iamkun#2277](iamkun#2277)) ([iamkun#2342](iamkun#2342)) ([89bf31c](iamkun@89bf31c))
* Optimize format method ([iamkun#2313](iamkun#2313)) ([1fe1b1d](iamkun@1fe1b1d))
* update Duration plugin add/subtract take into account days in month ([iamkun#2337](iamkun#2337)) ([3b1060f](iamkun@3b1060f))
* update MinMax plugin 1. ignore the 'null' in args 2. return the only one arg ([iamkun#2330](iamkun#2330)) ([3c2c6ee](iamkun@3c2c6ee))
BePo65 pushed a commit to BePo65/dayjs that referenced this pull request Sep 23, 2023
## [1.11.9](iamkun/dayjs@v1.11.8...v1.11.9) (2023-07-01)

### Bug Fixes

* Add null to min and max plugin return type ([iamkun#2355](iamkun#2355)) ([62d9042](iamkun@62d9042))
* check if null passed to objectSupport parser ([iamkun#2175](iamkun#2175)) ([013968f](iamkun@013968f))
* dayjs.diff improve performance ([iamkun#2244](iamkun#2244)) ([33c80e1](iamkun@33c80e1))
* dayjs(null) throws error, not return dayjs object as invalid date ([iamkun#2334](iamkun#2334)) ([c79e2f5](iamkun@c79e2f5))
* objectSupport plugin causes an error when null is passed to dayjs function (closes [iamkun#2277](iamkun#2277)) ([iamkun#2342](iamkun#2342)) ([89bf31c](iamkun@89bf31c))
* Optimize format method ([iamkun#2313](iamkun#2313)) ([1fe1b1d](iamkun@1fe1b1d))
* update Duration plugin add/subtract take into account days in month ([iamkun#2337](iamkun#2337)) ([3b1060f](iamkun@3b1060f))
* update MinMax plugin 1. ignore the 'null' in args 2. return the only one arg ([iamkun#2330](iamkun#2330)) ([3c2c6ee](iamkun@3c2c6ee))
ohsory1324 pushed a commit to ohsory1324/dayjs that referenced this pull request Dec 20, 2023
* improve: diff performance

* refactor: switch refactor

---------

Co-authored-by: 李权威 <liquanwei@corp.netease.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants