-
Notifications
You must be signed in to change notification settings - Fork 7.5k
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
Refactor utils #8360
Open
ahmed0saber
wants to merge
7
commits into
videojs:main
Choose a base branch
from
ahmed0saber:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Refactor utils #8360
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
f136aa0
Refactor ANDROID_VERSION in utils/browser.js
ahmed0saber 9ed2e0a
Refactor bufferedPercent in utils/buffer.js
ahmed0saber df64c8a
Refactor on function in utils/events.js
ahmed0saber 4c938e0
Refactor filterSource in utils/filter-source.js
ahmed0saber dee5402
Refactor throttle in utils/fn.js
ahmed0saber 4610a2f
Refactor createTimeRanges in utils/time.js
ahmed0saber 9d71e8a
Fix issue related to reassigning value to constant
ahmed0saber File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
|
@@ -141,7 +141,7 @@ function createTimeRangesObj(ranges) { | |||||||
export function createTimeRanges(start, end) { | ||||||||
if (Array.isArray(start)) { | ||||||||
return createTimeRangesObj(start); | ||||||||
} else if (start === undefined || end === undefined) { | ||||||||
} if (start === undefined || end === undefined) { | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||
return createTimeRangesObj(); | ||||||||
} | ||||||||
return createTimeRangesObj([[start, end]]); | ||||||||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was changed to use
window.performance.now()
in #5870. Why do you propose changing it to useDate.now()
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good question, we use
window.performance.now()
when we need a high level of accuracy as it is a measurement of floating point milliseconds, but do these0.153184
milliseconds really matter in our situation? I don't think they matter because we are using 30 milliseconds as a delay for the throttle function which is so huge compared totime % 1
, so we can simply neglect these neglectable numbers which have small bad effect on the performance, aswindow.performance.now()
is3 to 4
times slower thanDate.now()
, as shown in the following picture:Finally, I have initialized
lastCallTime
with 0, to avoid calling any function that requires a non-zero milliseconds to run.Also paying some attention to popularity and browser compatibility, we will find that
Date.now()
is the winner.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The main reason to use performance.now() here isn't the higher resolution but the guarantee of monotonic time updates. I would be inclined to leave it as is due to that.
I'm not sure that the performance difference between Date.now() and performance.now() in this usage are significant enough to worry about.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps the method used to determine the start time should be configurable, I can imagine
performance.now()
being superceded by some other better native JS alternative at some point (it never stops, does it) so a method that allows the user to useDate.now()
orperformance.now()
or evennextnewthing.now()
, is a reasonable idea, one I should've thought of when I submitted #5870That being said, please don't change it back to
new Date().getTime()
!