)]}'
{
  "commit": "22b8a401e8867d1689f9fc0d2a696636fb2e6c74",
  "tree": "f49f2082d3aacf85b7eadaff172339d82a63c626",
  "parents": [
    "20c2b3a4f850d4e7ceb5fde4126a37fedf0bd6e2"
  ],
  "author": {
    "name": "Zhiyuan Wang",
    "email": "zhiyuanwang@google.com",
    "time": "Tue Sep 03 16:57:15 2024 -0700"
  },
  "committer": {
    "name": "Android Build Coastguard Worker",
    "email": "android-build-coastguard-worker@google.com",
    "time": "Thu Dec 19 12:34:34 2024 -0800"
  },
  "message": "Improve DataStoreImpl latency for data.first():\n1. data flow only start updateCollector after emitting the first element in data flow, so it won\u0027t start for data.first() calls;\n2. refactor updateCollection to get rid of flow based implementations, instead use reference counting to make data flows share a coroutine to collect updates.\n\nBased on the micro-benchmark running on a Pixel 7 test device (clock locked), the minimum, median and p90 latency are reduced from HEAD\u0027s 471, 479 and 483 microseconds to 49.9, 51.1 and 51.9 microseconds. This change brings a 838% improvement for the cached data.first() read median latency.\n\nBug: b/354802764\nTest: ./gradlew :datastore:datastore-benchmark:connectedAndroidTest\n(cherry picked from https://android-review.googlesource.com/q/commit:7141b99f2c4001ec9ffbdbfda533ddaa90c0ec77)\n(cherry picked from https://android-review.googlesource.com/q/commit:c4cdbc0aba7064165a21fcefefede409b74ae3cd)\nMerged-In: I11a1ae0a5f546ffb1e780d3f3b7a5f1a17817dfc\nChange-Id: I11a1ae0a5f546ffb1e780d3f3b7a5f1a17817dfc\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "35caa9c5650da97edaab3db936664f0dbc488648",
      "old_mode": 33188,
      "old_path": "datastore/datastore-core/src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt",
      "new_id": "32fa1513cf535603e653df36cedd616b89f778b3",
      "new_mode": 33188,
      "new_path": "datastore/datastore-core/src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"
    }
  ]
}
