mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/52671 Changelog: [internal] When setting up the global `performance` value, we check if the native module exists to decide what version to setup: the legacy "barebones" version or the modern version that's mostly spec compliant. As we do that check and we shouldn't be requiring the module from anywhere else, it should be safe to always assume the module will be defined if we load the `Performance` class, so we can avoid checks in all methods. NOTE: I've kept some checks for a few methods that are still not fully propagated (new methods like `reportMark`, `reportMeasure` and `getMarkTime`). This improves performance slightly for `performance` methods: * Before | (index) | Task name | Latency average (ns) | Latency median (ns) | Throughput average (ops/s) | Throughput median (ops/s) | Samples | | ------- | --------------------------------------------------------- | -------------------- | ------------------- | -------------------------- | ------------------------- | ------- | | 0 | 'mark (default)' | '1803.32 ± 0.71%' | '1763.00' | '563849 ± 0.01%' | '567215' | 554908 | | 1 | 'mark (with custom startTime)' | '1762.39 ± 1.67%' | '1692.00' | '587832 ± 0.01%' | '591017' | 567414 | | 2 | 'measure (default)' | '1879.47 ± 1.44%' | '1813.00' | '548962 ± 0.01%' | '551572' | 532064 | | 3 | 'measure (with start and end timestamps)' | '1916.65 ± 0.84%' | '1873.00' | '531258 ± 0.01%' | '533903' | 521743 | | 4 | 'measure (with mark names)' | '2049.84 ± 0.44%' | '2013.00' | '492799 ± 0.01%' | '496771' | 487844 | | 5 | 'clearMarks' | '719.87 ± 0.04%' | '711.00' | '1403602 ± 0.01%' | '1406470' | 1389136 | | 6 | 'clearMeasures' | '710.04 ± 0.04%' | '701.00' | '1421610 ± 0.01%' | '1426534' | 1408373 | | 7 | 'mark + clearMarks' | '2256.56 ± 1.10%' | '2143.00' | '460721 ± 0.02%' | '466636' | 443152 | | 8 | 'measure + clearMeasures (with start and end timestamps)' | '2345.44 ± 1.11%' | '2244.00' | '442395 ± 0.02%' | '445633' | 426360 | | 9 | 'measure + clearMeasures (with mark names)' | '2349.55 ± 0.61%' | '2283.00' | '434370 ± 0.02%' | '438020' | 425613 | * After | (index) | Task name | Latency average (ns) | Latency median (ns) | Throughput average (ops/s) | Throughput median (ops/s) | Samples | | ------- | --------------------------------------------------------- | -------------------- | ------------------- | -------------------------- | ------------------------- | ------- | | 0 | 'mark (default)' | '1791.47 ± 1.08%' | '1732.00' | '573787 ± 0.01%' | '577367' | 558202 | | 1 | 'mark (with custom startTime)' | '1699.41 ± 1.27%' | '1642.00' | '605188 ± 0.01%' | '609013' | 588441 | | 2 | 'measure (default)' | '1820.92 ± 1.39%' | '1763.00' | '563437 ± 0.01%' | '567215' | 549173 | | 3 | 'measure (with start and end timestamps)' | '1923.57 ± 1.65%' | '1852.00' | '537112 ± 0.01%' | '539957' | 519867 | | 4 | 'measure (with mark names)' | '2036.09 ± 1.05%' | '1983.00' | '500406 ± 0.01%' | '504286' | 491139 | | 5 | 'clearMarks' | '657.49 ± 0.07%' | '641.00' | '1543793 ± 0.01%' | '1560062' | 1520939 | | 6 | 'clearMeasures' | '669.02 ± 0.09%' | '651.00' | '1520386 ± 0.01%' | '1536098' | 1494730 | | 7 | 'mark + clearMarks' | '2213.09 ± 1.53%' | '2103.00' | '470008 ± 0.02%' | '475511' | 451858 | | 8 | 'measure + clearMeasures (with start and end timestamps)' | '2353.15 ± 1.27%' | '2214.00' | '448563 ± 0.02%' | '451671' | 424962 | | 9 | 'measure + clearMeasures (with mark names)' | '2298.28 ± 0.62%' | '2243.00' | '441703 ± 0.02%' | '445831' | 435108 | Reviewed By: hoxyq Differential Revision: D78412931 fbshipit-source-id: 07390722bb00a51847cb5625b2adb4e26f89e5d2
Where is the template?
The React Native Template has moved from being shipping inside the react-native package to it's own package: @react-native-community/template.
Why has it moved?
The React Native Frameworks RFC0759 provides background information.
When was it moved?
The 0.75 release.