diff --git a/packages/react-native/ReactCommon/cxxreact/JSExecutor.cpp b/packages/react-native/ReactCommon/cxxreact/JSExecutor.cpp index 1ad57f34625..385bb95abe9 100644 --- a/packages/react-native/ReactCommon/cxxreact/JSExecutor.cpp +++ b/packages/react-native/ReactCommon/cxxreact/JSExecutor.cpp @@ -11,7 +11,9 @@ #include #include -#include +#include + +#include namespace facebook::react { @@ -25,7 +27,7 @@ std::string JSExecutor::getSyntheticBundlePath( } double JSExecutor::performanceNow() { - return ReactPerfLogger::performanceNow(); + return chronoToDOMHighResTimeStamp(std::chrono::steady_clock::now()); } jsinspector_modern::RuntimeTargetDelegate& diff --git a/packages/react-native/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp b/packages/react-native/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp index 1cd1a8fac14..5da4aee2474 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include "NativePerformance.h" @@ -120,7 +120,7 @@ double NativePerformance::markWithResult( auto entry = PerformanceEntryReporter::getInstance()->reportMark(name, startTime); - ReactPerfLogger::mark(eventName, entry.startTime, trackName); + ReactPerfettoLogger::mark(eventName, entry.startTime, trackName); return entry.startTime; } @@ -138,7 +138,7 @@ std::tuple NativePerformance::measureWithResult( auto entry = PerformanceEntryReporter::getInstance()->reportMeasure( eventName, startTime, endTime, duration, startMark, endMark); - ReactPerfLogger::measure( + ReactPerfettoLogger::measure( eventName, entry.startTime, entry.startTime + entry.duration, trackName); return std::tuple{entry.startTime, entry.duration}; diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp index 770ce54d6e2..c83679c6a9c 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp @@ -138,6 +138,7 @@ PerformanceEntry PerformanceEntryReporter::reportMark( markBuffer_.add(entry); } + // TODO(T198982317): Log `performance.mark()` events to jsinspector_modern observerRegistry_->queuePerformanceEntry(entry); return entry; } @@ -173,6 +174,7 @@ PerformanceEntry PerformanceEntryReporter::reportMeasure( measureBuffer_.add(entry); } + // TODO(T198982317): Log `performance.measure()` events to jsinspector_modern observerRegistry_->queuePerformanceEntry(entry); return entry; } @@ -217,6 +219,7 @@ void PerformanceEntryReporter::reportEvent( eventBuffer_.add(entry); } + // TODO(T198982346): Log interaction events to jsinspector_modern observerRegistry_->queuePerformanceEntry(entry); } diff --git a/packages/react-native/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h b/packages/react-native/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h index b5956d6c2b7..aaaf88004cb 100644 --- a/packages/react-native/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +++ b/packages/react-native/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h @@ -22,6 +22,9 @@ struct BufferEvent { std::string track; }; +/** + * @deprecated + */ class FuseboxTracer { public: FuseboxTracer(const FuseboxTracer&) = delete; diff --git a/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfLogger.cpp b/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp similarity index 73% rename from packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfLogger.cpp rename to packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp index 94e8eaae4ff..3e8e50b320b 100644 --- a/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfLogger.cpp +++ b/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.cpp @@ -5,14 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#include "ReactPerfLogger.h" - -#include -#if __has_include() -#include -#define HAS_FUSEBOX -#endif -#include +#include "ReactPerfettoLogger.h" #ifdef WITH_PERFETTO #include "ReactPerfetto.h" @@ -36,16 +29,11 @@ std::string toPerfettoTrackName( } // namespace #endif -/* static */ void ReactPerfLogger::measure( +/* static */ void ReactPerfettoLogger::measure( const std::string_view& eventName, double startTime, double endTime, const std::optional& trackName) { -#ifdef HAS_FUSEBOX - FuseboxTracer::getFuseboxTracer().addEvent( - eventName, (uint64_t)startTime, (uint64_t)endTime, trackName); -#endif - #ifdef WITH_PERFETTO if (TRACE_EVENT_CATEGORY_ENABLED("react-native")) { auto track = getPerfettoWebPerfTrackAsync(toPerfettoTrackName(trackName)); @@ -60,12 +48,10 @@ std::string toPerfettoTrackName( #endif } -/* static */ void ReactPerfLogger::mark( +/* static */ void ReactPerfettoLogger::mark( const std::string_view& eventName, double startTime, const std::optional& trackName) { - // TODO(T203046480) Support mark in FuseboxTracer - #ifdef WITH_PERFETTO if (TRACE_EVENT_CATEGORY_ENABLED("react-native")) { TRACE_EVENT_INSTANT( @@ -77,8 +63,4 @@ std::string toPerfettoTrackName( #endif } -/* static */ double ReactPerfLogger::performanceNow() { - return chronoToDOMHighResTimeStamp(std::chrono::steady_clock::now()); -} - } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfLogger.h b/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.h similarity index 72% rename from packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfLogger.h rename to packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.h index e2e2eff92df..c08c6950354 100644 --- a/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfLogger.h +++ b/packages/react-native/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.h @@ -15,12 +15,10 @@ namespace facebook::react { /** - * An internal interface for logging performance events to configured React - * Native performance tools, such as Perfetto or React Native DevTools. - * - * Approximates https://w3c.github.io/user-timing/. + * An internal interface for logging performance events to Perfetto, when + * configured. */ -class ReactPerfLogger { +class ReactPerfettoLogger { public: static void mark( const std::string_view& eventName, @@ -32,8 +30,6 @@ class ReactPerfLogger { double startTime, double endTime, const std::optional& trackName); - - static double performanceNow(); }; } // namespace facebook::react