Skip to content

Fireperf + AQS Draft PR #7091

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

Closed
wants to merge 37 commits into from
Closed

Fireperf + AQS Draft PR #7091

wants to merge 37 commits into from

Conversation

tejasd
Copy link
Contributor

@tejasd tejasd commented Jun 27, 2025

No description provided.

tejasd and others added 30 commits May 23, 2025 11:13
Based on the behaviour of AQS w/ Fireperf, an AQS session isn't
available when (currently) logging gauge metadata.

Changes:
- Remove the current logging of gauge metadata - will be re-introduced
in a future PR.
- Switch Gauge collection from `scheduleAtFixedRate` to
`scheduleWithFixedDelay`. As
[documented](https://stackoverflow.com/a/78405653), this *should*
prevent a potentially large amounts of gauge collection if a process is
cached, and then restored during a verbose session - which *should* make
it work better w/ AQS.
- Remove API restricted behaviour which is no longer relevant.
This PR doesn't change the use of session ID to AQS - except in
GaugeMetadata. I've added TODOs to identify the missing locations.
- Override PerfSession session id to aqs session id when possible
- Add assertion for debug mode to double check if aqs session id
available by the time of use
Leverage on `ProcessDetailsProvider` to retrieve process name info
- Update Gauge metrics collection frequency to be independent of Session
Change.
- Update GaugeMetric logging to log them based on metrics count
- Necessary changes in SessionManager (remove app state monitor)

There's a non-trivial number of unit test failures in GaugeManager. This
PR marks them as Ignore with a TODO.
…6953)

- Fixes relevant unit tests - specifically requiring a definite
`ApplicationProcessState`
- Adds new unit tests for the updated behaviour
- Deletes unit tests that *should* be OK to delete.
- This is based on
`firebase-sessions/src/main/kotlin/com/google/firebase/sessions/ProcessDetailsProvider.kt`
- Usage in `AppStartTrace` and `TransportManager`
- Reverts changes in `firebase-sessions/src/main/` to `main`
As part of looking into refactoring `GaugeCounter` I noticed I'd missed
this increment.
- Update frequency of Gauge logging to better match the existing
implementation.
- Update GaugeMetadata logging to only log metadata if it's a verbose
session.
Use multi-process DataStore instead of Preferences DataStore.

This change allows multiple processes to share the same datastore file
safely. This reduces settings fetch to one per app run, not one per
process.

Also updated the TimeProvider to provide an object with explicit time
units. This will make time less error prone. Removed all instances of
`System.currentTimeMillis()` from tests, making them deterministic.
With the multi-process data store change, all processes will read the
settings cache from the same file safely. This means if a second process
started, it would read the cache the first process persisted.

But if 2 processes were already running, and one fetched and cached new
settings, it wouldn't automatically share it with the other running
process.

This change fixes that by having all processes watch the file.

Also cleaned up settings a bit, and made everything in seconds to avoid
converting units. Cleaned up unit tests. Also removed the need to lazy
load the cache by doing a double check in the getter instead.

There is more potential to clean up, but let's do it later.
Fix Robolectric tests showing warning about datastore_shared_counter by
falling back to the normal DataStore instance. This is a known issue,
see [b/352047731](http://b/352047731).
This removes all the bound service implementation, and starts the shared
sessions repository implementation. The shared repository is responsible
for sharing session data between processes in a simple way.

This does not detect cold starts yet. The `SharedSessionRepository`
class might be getting too much, we will consider splitting it up as
implementation goes further.
send session event based on data collection and setting config
Fix where we generate and send session details to firelog. Before this,
we might send false positives to firelog, or even update the session
details with a stale copy. Now the session generate and send to firelog
happen inside the datastore transform with the data in datastore.
Implement fake datastore for unit tests. This fake can act like a simple
in memory datastore, but it can also throw provided exceptions on
specific actions. It can throw on update, throw on collect, throw on
init. This will help write unit tests for when datastore fails.
Using try catch block to make datastore fall back to a pre multi-process
supported version. Generate a new session locally then notify to
subscribers
Make background time nullable
For each new session generated, reset background time
Update unit tests
Implement new cold app start detection heuristic.

This is just the reading part, and all the scaffolding. Next step will
be to start writing the process data map.

Tested by unit tests and manual testing with the sessions test app
Implement ProcessDataManager in the way we designed in
https://docs.google.com/document/d/1yEd8dCIzwNwLhRRwkDtzWFx9vxV5d-eQU-P47wDL40k/edit?usp=sharing

Tested manually in the sessions test app, and with unit tests
Implement cold start detection logic as described in
https://docs.google.com/document/d/1yEd8dCIzwNwLhRRwkDtzWFx9vxV5d-eQU-P47wDL40k/edit?usp=sharing

Also renamed process related functions to be more consistent to make the
code less error prone. This is also described in the doc

Tested by unit tests and with the sessions test app
Tested manually using sessions test app. This is a trivial change
Fix the profile case with clear app data. Now the app data will clear in
the setup block, instead of the measure block. This also reads the
output to make sure app data has cleared before proceeding to the
measure block.
Use the same tag for all logs in sessions. This will make it easier to
dogfood, and is consistent with Perf and Crashlytics

If any context is lost by losing the tag named after the class, we can
update those log lines as we run into them. A future change we can do is
refactor to use the firebase common logger
Add more trace buttons to sessions test app to match the detailed test
cases easier
mrober and others added 7 commits June 20, 2025 11:07
Fix cold starts incorrectly using the previous firstSessionId and
sessionIndex

This came up during the dogfooding session

When a cold start happens, we must always create a new session. Before
this fix, it would preserve the current session's firstSesisonId and
sessionIndex when that session hadn't expired. But a cold start is
regardless of the current session expiring
Make the Sessions test app more convenient to test

Initialize Firebase on the Application, not Activity, so it can be
initialized in background services
Fixed the process name for older Android API levels
Made all the logcat tags be the same, so it will be easier to give test
instructions like `tag:SessionsTestApp tag:FirebaseSessions`
Added 2 background services with easy actions to interact with in the
background, e.g., `am startservice -n
com.google.firebase.testing.sessions/.MyServiceA -a PING`
Notify Sessions when a fatal crash occurs. Sessions will treat it like a
background event. This will preserve session background time when a
process ends due to a crash
Copy link
Contributor

📝 PRs merging into main branch

Our main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released.

Copy link
Contributor

Firebase AI Mock Responses Check ⚠️

A newer major version of the mock responses for Firebase AI unit tests is available. update_responses.sh should be updated to clone the latest version of the responses: v14.1

@tejasd tejasd marked this pull request as draft June 27, 2025 15:33
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @tejasd, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a fundamental shift in how Firebase Performance Monitoring manages sessions by integrating it with the new Firebase Sessions SDK. The change centralizes session lifecycle, enables robust multi-process support, and enhances crash reporting integration, leading to more accurate and consistent session data.

Highlights

  • Firebase Sessions Integration: Firebase Performance Monitoring (Fireperf) is now deeply integrated with the new Firebase Sessions SDK. Fireperf registers itself as a session subscriber, enabling centralized session management and consistent session IDs across Firebase products.
  • Multi-Process Session Management: The Firebase Sessions SDK introduces robust multi-process session awareness. This includes new components like ProcessDataManager and SharedSessionRepository which use DataStore for persistent session state, allowing for accurate cold start detection and session continuity even in complex multi-process Android applications.
  • Crashlytics Notification for Sessions: Firebase Crashlytics now notifies the Firebase Sessions SDK about fatal crashes via a new CrashEventReceiver API. This ensures that the Sessions SDK can update the session state appropriately (e.g., marking the app as backgrounded) when a crash occurs.
  • Refactored Gauge Collection: Performance Monitoring's CPU and Memory gauge collection has been updated. A new GaugeCounter mechanism now triggers metric logging based on the number of collected data points, replacing fixed-rate flushing. Session sampling for gauges is also now deterministic, based on the session ID.
  • API and Internal Codebase Updates: Significant refactoring has occurred across both Fireperf and Firebase Sessions. This includes renaming isGaugeAndEventCollectionEnabled() to isVerbose(), simplifying PerfSession creation, and enhancing how application and process information is collected and reported in logged metrics.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request integrates Firebase Performance with the new Firebase Sessions SDK. The architectural improvements, such as adopting a centralized session management model and using a more robust multi-process data persistence layer, are commendable. I've identified a couple of critical issues related to API level compatibility that could lead to crashes on older Android versions. Addressing these points will be crucial for ensuring the stability of the SDK.

Comment on lines +230 to 231
return sysconf(OsConstants._SC_CLK_TCK);
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

The previous implementation had a check for VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP before calling sysconf(OsConstants._SC_CLK_TCK). This was removed. OsConstants._SC_CLK_TCK is only available on API 21+. If the minSdkVersion for this module is less than 21, this will cause a NoSuchFieldError on older devices. Please ensure the minSdkVersion is at least 21 or restore the version check to prevent crashes.

@tejasd tejasd closed this Jun 27, 2025
@tejasd tejasd deleted the fireperf-aqs-bugbash branch June 27, 2025 15:42
@google-oss-bot
Copy link
Contributor

Coverage Report 1

Affected Products

  • firebase-crashlytics

    Overall coverage changed from ? (39edc7c) to 11.55% (0368460) by ?.

    131 individual files with coverage change

    FilenameBase (39edc7c)Merge (0368460)Diff
    AnalyticsDeferredProxy.java?0.00%?
    AnalyticsEventLogger.java?0.00%?
    AnalyticsEventReceiver.java?0.00%?
    AppData.java?50.00%?
    AutoCrashlyticsReportEncoder.java?57.80%?
    AutoRolloutAssignmentEncoder.java?0.00%?
    AutoValue_CrashlyticsReport.java?0.00%?
    AutoValue_CrashlyticsReportWithSessionId.java?0.00%?
    AutoValue_CrashlyticsReport_ApplicationExitInfo.java?58.42%?
    AutoValue_CrashlyticsReport_ApplicationExitInfo_BuildIdMappingForArch.java?0.00%?
    AutoValue_CrashlyticsReport_CustomAttribute.java?0.00%?
    AutoValue_CrashlyticsReport_FilesPayload.java?0.00%?
    AutoValue_CrashlyticsReport_FilesPayload_File.java?0.00%?
    AutoValue_CrashlyticsReport_Session.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Application.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Application_Organization.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Device.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_BinaryImage.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Exception.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Signal.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread_Frame.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_ProcessDetails.java?40.35%?
    AutoValue_CrashlyticsReport_Session_Event_Device.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Log.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_RolloutAssignment.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_RolloutAssignment_RolloutVariant.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_RolloutsState.java?0.00%?
    AutoValue_CrashlyticsReport_Session_OperatingSystem.java?0.00%?
    AutoValue_CrashlyticsReport_Session_User.java?0.00%?
    AutoValue_InstallIdProvider_InstallIds.java?0.00%?
    AutoValue_RolloutAssignment.java?0.00%?
    AutoValue_StaticSessionData.java?0.00%?
    AutoValue_StaticSessionData_AppData.java?0.00%?
    AutoValue_StaticSessionData_DeviceData.java?0.00%?
    AutoValue_StaticSessionData_OsData.java?0.00%?
    BackgroundPriorityRunnable.java?0.00%?
    BatteryState.java?0.00%?
    BlockingAnalyticsEventLogger.java?0.00%?
    BreadcrumbAnalyticsEventReceiver.java?0.00%?
    BreadcrumbHandler.java?0.00%?
    BreadcrumbSource.java?0.00%?
    BuildIdInfo.java?62.50%?
    BytesBackedNativeSessionFile.java?0.00%?
    CachedSettingsIo.java?0.00%?
    CLSUUID.java?0.00%?
    CommonUtils.java?1.06%?
    CrashlyticsAnalyticsListener.java?0.00%?
    CrashlyticsAppQualitySessionsStore.java?0.00%?
    CrashlyticsAppQualitySessionsSubscriber.java?0.00%?
    CrashlyticsController.java?18.54%?
    CrashlyticsCore.java?0.61%?
    CrashlyticsFileMarker.java?30.77%?
    CrashlyticsNativeComponent.java?0.00%?
    CrashlyticsNativeComponentDeferredProxy.java?25.00%?
    CrashlyticsOriginAnalyticsEventLogger.java?0.00%?
    CrashlyticsRegistrar.java?0.00%?
    CrashlyticsRemoteConfigListener.kt?0.00%?
    CrashlyticsReport.java?4.65%?
    CrashlyticsReportDataCapture.java?3.33%?
    CrashlyticsReportJsonTransform.java?1.01%?
    CrashlyticsReportPersistence.java?3.06%?
    CrashlyticsReportWithSessionId.java?0.00%?
    CrashlyticsTasks.java?0.00%?
    CrashlyticsUncaughtExceptionHandler.java?0.00%?
    CrashlyticsWorker.java?37.21%?
    CrashlyticsWorkers.kt?42.31%?
    CurrentTimeProvider.java?0.00%?
    CustomKeysAndValues.java?0.00%?
    DataCollectionArbiter.java?84.27%?
    DataTransportCrashlyticsReportSender.java?48.28%?
    DefaultSettingsJsonTransform.java?0.00%?
    DefaultSettingsSpiCall.java?0.00%?
    DeliveryMechanism.java?0.00%?
    DevelopmentPlatformProvider.java?0.00%?
    DisabledBreadcrumbSource.java?0.00%?
    EventMetadata.kt?0.00%?
    ExecutorUtils.java?0.00%?
    FileBackedNativeSessionFile.java?0.00%?
    FileLogStore.java?0.00%?
    FileStore.java?29.85%?
    FirebaseCrashlytics.java?0.00%?
    FirebaseCrashlytics.kt?0.00%?
    FirebaseInstallationId.kt?0.00%?
    HttpGetRequest.java?0.00%?
    HttpRequestFactory.java?0.00%?
    HttpResponse.java?0.00%?
    IdManager.java?2.63%?
    InstallerPackageNameProvider.java?0.00%?
    InstallIdProvider.java?0.00%?
    KeysMap.java?24.32%?
    KeyValueBuilder.kt?0.00%?
    LogFileManager.java?60.71%?
    Logger.java?40.54%?
    MetaDataStore.java?18.80%?
    MiddleOutFallbackStrategy.java?0.00%?
    MiddleOutStrategy.java?0.00%?
    NativeSessionFile.java?0.00%?
    NativeSessionFileGzipper.java?0.00%?
    NativeSessionFileProvider.java?0.00%?
    OnDemandCounter.java?0.00%?
    ProcessDetailsProvider.kt?70.59%?
    QueueFile.java?0.00%?
    QueueFileLogStore.java?7.58%?
    RemoteConfigDeferredProxy.java?0.00%?
    RemoveRepeatsStrategy.java?0.00%?
    ReportQueue.java?0.00%?
    ResponseParser.java?0.00%?
    RolloutAssignment.java?0.00%?
    RolloutAssignmentList.java?44.44%?
    SessionReportingCoordinator.java?42.46%?
    Settings.java?95.00%?
    SettingsCacheBehavior.java?0.00%?
    SettingsController.java?0.00%?
    SettingsJsonConstants.java?0.00%?
    SettingsJsonParser.java?0.00%?
    SettingsJsonTransform.java?0.00%?
    SettingsProvider.java?0.00%?
    SettingsRequest.java?0.00%?
    SettingsSpiCall.java?0.00%?
    SettingsV3JsonTransform.java?0.00%?
    StackTraceTrimmingStrategy.java?0.00%?
    StaticSessionData.java?0.00%?
    SystemCurrentTimeProvider.java?0.00%?
    TrimmedThrowableData.java?0.00%?
    UnavailableAnalyticsEventLogger.java?0.00%?
    UserMetadata.java?19.17%?
    Utils.java?0.00%?

  • firebase-sessions

    Overall coverage changed from ? (39edc7c) to 82.29% (0368460) by ?.

    48 individual files with coverage change

    FilenameBase (39edc7c)Merge (0368460)Diff
    ApplicationInfo.kt?100.00%?
    AutoSessionEventEncoder.java?100.00%?
    CrashEventReceiver.kt?75.00%?
    DaggerFirebaseSessionsComponent.java?92.45%?
    EventGDTLogger.kt?70.00%?
    EventGDTLogger_Factory.java?0.00%?
    FirebaseSessions.kt?53.57%?
    FirebaseSessionsComponent.kt?65.79%?
    FirebaseSessionsComponent_MainModule_Companion_ApplicationInfoFactory.java?0.00%?
    FirebaseSessionsComponent_MainModule_Companion_SessionConfigsDataStoreFactory.java?0.00%?
    FirebaseSessionsComponent_MainModule_Companion_SessionDataStoreFactory.java?0.00%?
    FirebaseSessionsComponent_MainModule_Companion_TimeProviderFactory.java?100.00%?
    FirebaseSessionsComponent_MainModule_Companion_UuidGeneratorFactory.java?100.00%?
    FirebaseSessionsDependencies.kt?92.00%?
    FirebaseSessionsRegistrar.kt?90.91%?
    FirebaseSessions_Factory.java?0.00%?
    InstallationId.kt?100.00%?
    LocalOverrideSettings.kt?100.00%?
    LocalOverrideSettings_Factory.java?0.00%?
    ProcessDataManager.kt?71.43%?
    ProcessDataManagerImpl_Factory.java?0.00%?
    ProcessDetailsProvider.kt?76.00%?
    RemoteSettings.kt?88.41%?
    RemoteSettingsFetcher.kt?10.00%?
    RemoteSettingsFetcher_Factory.java?0.00%?
    RemoteSettings_Factory.java?0.00%?
    SessionConfigs.kt?95.45%?
    SessionData.kt?58.82%?
    SessionDataSerializer_Factory.java?0.00%?
    SessionDetails.kt?85.71%?
    SessionEvent.kt?100.00%?
    SessionEvents.kt?98.00%?
    SessionFirelogPublisher.kt?83.33%?
    SessionFirelogPublisherImpl_Factory.java?0.00%?
    SessionGenerator.kt?100.00%?
    SessionGenerator_Factory.java?0.00%?
    SessionsActivityLifecycleCallbacks.kt?18.75%?
    SessionsActivityLifecycleCallbacks_Factory.java?0.00%?
    SessionsSettings.kt?93.75%?
    SessionsSettings_Factory.java?0.00%?
    SessionSubscriber.kt?75.00%?
    SettingsCache.kt?80.56%?
    SettingsCacheImpl_Factory.java?0.00%?
    SettingsProvider.kt?50.00%?
    SharedSessionRepository.kt?85.50%?
    SharedSessionRepositoryImpl_Factory.java?0.00%?
    TimeProvider.kt?75.00%?
    UuidGenerator.kt?100.00%?

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/4zLPyYlshy.html

@google-oss-bot
Copy link
Contributor

Size Report 1

Affected Products

  • firebase-crashlytics

    TypeBase (39edc7c)Merge (0368460)Diff
    aar415 kB415 kB+81 B (+0.0%)
    apk (aggressive)785 kB684 kB-102 kB (-13.0%)
    apk (release)6.64 MB6.12 MB-527 kB (-7.9%)
  • firebase-perf

    TypeBase (39edc7c)Merge (0368460)Diff
    aar316 kB324 kB+7.69 kB (+2.4%)
    apk (aggressive)1.63 MB1.63 MB+541 B (+0.0%)
    apk (release)10.1 MB10.4 MB+277 kB (+2.7%)
  • firebase-sessions

    TypeBase (39edc7c)Merge (0368460)Diff
    aar203 kB219 kB+16.0 kB (+7.9%)
    apk (aggressive)645 kB539 kB-106 kB (-16.4%)
    apk (release)6.31 MB5.79 MB-527 kB (-8.3%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/E7026ySth7.html

@google-oss-bot
Copy link
Contributor

Startup Time Report 1

Note: Layout is sometimes suboptimal due to limited formatting support on GitHub. Please check this report on GCS.

Notes

Startup Times

  • fire-cls

    DeviceStatisticsDistributions
    oriole-32
    Percentile39edc7c0368460DiffSignificant (?)
    p109.50 ±3 ms9.42 ±2 ms-75.2 μs (-0.8%)NO
    p2510.0 ±3 ms9.93 ±2 ms-69.3 μs (-0.7%)NO
    p5010.8 ±3 ms10.6 ±2 ms-154 μs (-1.4%)NO
    p7512.0 ±3 ms11.6 ±2 ms-316 μs (-2.6%)NO
    p9013.2 ±3 ms13.1 ±3 ms-104 μs (-0.8%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
    redfin-30
    Percentile39edc7c0368460DiffSignificant (?)
    p1012.8 ±3 ms12.3 ±5 ms-542 μs (-4.2%)NO
    p2513.7 ±4 ms13.2 ±6 ms-432 μs (-3.2%)NO
    p5015.1 ±5 ms14.4 ±7 ms-634 μs (-4.2%)NO
    p7516.8 ±6 ms15.9 ±8 ms-838 μs (-5.0%)NO
    p9018.9 ±7 ms18.4 ±9 ms-417 μs (-2.2%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
  • fire-perf

    DeviceStatisticsDistributions
    oriole-32
    Percentile39edc7c0368460DiffSignificant (?)
    p10259 ±24 μs593 ±41 μs+334 μs (+128.6%)YES
    p25271 ±24 μs666 ±47 μs+395 μs (+145.4%)YES
    p50290 ±26 μs764 ±43 μs+474 μs (+163.6%)YES
    p75326 ±26 μs902 ±63 μs+576 μs (+176.8%)YES
    p90389 ±28 μs1.06 ±0.08 ms+673 μs (+172.8%)YES

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
    redfin-30
    Percentile39edc7c0368460DiffSignificant (?)
    p10739 ±64 μs1.20 ±0.07 ms+464 μs (+62.8%)YES
    p25785 ±62 μs1.24 ±0.07 ms+450 μs (+57.3%)YES
    p50868 ±65 μs1.31 ±0.06 ms+447 μs (+51.5%)YES
    p75987 ±34 μs1.44 ±0.09 ms+451 μs (+45.7%)YES
    p901.07 ±0.04 ms1.57 ±0.1 ms+500 μs (+46.5%)YES

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
  • fire-rc

    DeviceStatisticsDistributions
    oriole-32
    Percentile39edc7c0368460DiffSignificant (?)
    p10106 ±67 μs111 ±80 μs+5.13 μs (+4.8%)NO
    p25115 ±67 μs119 ±86 μs+3.82 μs (+3.3%)NO
    p50136 ±70 μs142 ±102 μs+6.47 μs (+4.8%)NO
    p75177 ±80 μs177 ±117 μs-285 ns (-0.2%)NO
    p90224 ±96 μs243 ±162 μs+19.1 μs (+8.5%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
    redfin-30
    Percentile39edc7c0368460DiffSignificant (?)
    p10314 ±425 μs374 ±405 μs+59.2 μs (+18.8%)NO
    p25363 ±537 μs446 ±477 μs+83.7 μs (+23.1%)NO
    p50427 ±620 μs580 ±604 μs+153 μs (+35.9%)NO
    p75521 ±712 μs763 ±735 μs+242 μs (+46.5%)NO
    p90672 ±872 μs1.13 ±0.9 ms+460 μs (+68.5%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
  • fire-sessions

    DeviceStatisticsDistributions
    oriole-32
    Percentile39edc7c0368460DiffSignificant (?)
    p103.05 ±1 ms4.80 ±1 ms+1.75 ms (+57.2%)NO
    p253.30 ±1 ms5.17 ±1 ms+1.87 ms (+56.5%)NO
    p503.72 ±2 ms5.87 ±2 ms+2.14 ms (+57.6%)NO
    p754.31 ±2 ms6.69 ±2 ms+2.39 ms (+55.5%)NO
    p905.11 ±2 ms7.59 ±2 ms+2.48 ms (+48.5%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
    redfin-30
    Percentile39edc7c0368460DiffSignificant (?)
    p104.67 ±0.9 ms7.78 ±2 ms+3.12 ms (+66.8%)NO
    p255.07 ±1 ms8.43 ±3 ms+3.36 ms (+66.3%)NO
    p505.83 ±2 ms9.17 ±3 ms+3.33 ms (+57.2%)NO
    p756.98 ±3 ms10.0 ±4 ms+3.07 ms (+44.0%)NO
    p908.60 ±4 ms11.3 ±5 ms+2.68 ms (+31.2%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
  • timeToInitialDisplay

    DeviceStatisticsDistributions
    oriole-32
    Percentile39edc7c0368460DiffSignificant (?)
    p10200 ±4 ms206 ±2 ms+5.59 ms (+2.8%)NO
    p25206 ±5 ms212 ±2 ms+5.12 ms (+2.5%)NO
    p50213 ±6 ms219 ±2 ms+5.31 ms (+2.5%)NO
    p75221 ±6 ms226 ±2 ms+5.16 ms (+2.3%)NO
    p90228 ±6 ms236 ±2 ms+7.62 ms (+3.3%)NO

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk
    redfin-30
    Percentile39edc7c0368460DiffSignificant (?)
    p10223 ±4 ms259 ±5 ms+36.0 ms (+16.2%)YES
    p25229 ±4 ms266 ±5 ms+37.0 ms (+16.2%)YES
    p50236 ±4 ms274 ±6 ms+38.1 ms (+16.2%)YES
    p75243 ±5 ms283 ±6 ms+40.4 ms (+16.6%)YES
    p90253 ±5 ms297 ±6 ms+43.9 ms (+17.3%)YES

    20 test runs in comparison
    CommitTest Runs
    39edc7c
    • 2025-06-27_15:20:53.274395_Pnyu
    • 2025-06-27_15:20:53.274436_VkpU
    • 2025-06-27_15:20:53.274446_DLgt
    • 2025-06-27_15:20:53.274455_otGA
    • 2025-06-27_15:20:53.274462_TUIj
    • 2025-06-27_15:20:53.274470_ZbDJ
    • 2025-06-27_15:20:53.274477_IOYz
    • 2025-06-27_15:20:53.274484_dCcd
    • 2025-06-27_15:20:53.274491_zorD
    • 2025-06-27_15:20:53.274498_IfmF
    0368460
    • 2025-06-27_15:55:00.216347_kaMx
    • 2025-06-27_15:55:00.216718_ojQx
    • 2025-06-27_15:55:00.216726_WIrs
    • 2025-06-27_15:55:00.216731_xZqL
    • 2025-06-27_15:55:00.216736_kGOC
    • 2025-06-27_15:55:00.216740_oxlJ
    • 2025-06-27_15:55:00.216744_DXsb
    • 2025-06-27_15:55:00.216748_yFNp
    • 2025-06-27_15:55:00.216752_pBjV
    • 2025-06-27_15:55:00.216756_FTlk

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/iGGN9F7YlW/index.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants