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

Implement Long Tasks API for PerformanceObserver #45473

Closed
wants to merge 2 commits into from

Conversation

rubennorte
Copy link
Contributor

Summary:
This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner labels Jul 16, 2024
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

@analysis-bot
Copy link

analysis-bot commented Jul 16, 2024

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 21,355,273 +442
android hermes armeabi-v7a n/a --
android hermes x86 n/a --
android hermes x86_64 n/a --
android jsc arm64-v8a 24,550,165 +182
android jsc armeabi-v7a n/a --
android jsc x86 n/a --
android jsc x86_64 n/a --

Base commit: c82edec
Branch: main

@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 16, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 17, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
Differential Revision: D59820241
rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 18, 2024
Summary:
Pull Request resolved: facebook#45492

Changelog: [internal]

When testing the changes in facebook#45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

rubennorte added a commit to rubennorte/react-native that referenced this pull request Jul 18, 2024
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
Summary:
Pull Request resolved: facebook#45473

This is a basic implementation of the Long Tasks API (https://w3c.github.io/longtasks/).

It detects and reports long tasks when using the Event Loop (in the modern RuntimeScheduler) when a new feature flag for this purpose is enabled.

This doesn't include attribution information at the moment.

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D55491870
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D55491870

facebook-github-bot pushed a commit that referenced this pull request Jul 18, 2024
Summary:
Pull Request resolved: #45492

Changelog: [internal]

When testing the changes in #45473 / D55491870, I saw that the reported time spans for long tasks didn't perfectly align with the long tasks themselves in traces (Perfetto).

Taking a closer look, I realized that I wasn't doing the conversion between times and durations from `chrono` and `DOMHighResTimeStamp` (a `double`) correctly, and we're doing this conversion very often.

This moves the definition of `DOMHighResTimeStamp` to its own library and adds conversion methods to make sure we don't make this mistake in the future.

Reviewed By: rshest

Differential Revision: D59820241

fbshipit-source-id: c123920de56336da384ddc484f6ac9d287724301
@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Jul 18, 2024
@facebook-github-bot
Copy link
Contributor

This pull request has been merged in 64c4e38.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported Merged This PR has been merged. p: Facebook Partner: Facebook Partner
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants