)]}'
{
  "commit": "2852e5675f49de002e249ea0597d3900836fae94",
  "tree": "e49b8de2a1658ea9c24adc8015f3f58bcacdb295",
  "parents": [
    "fc86904b885a859830ea915bbb384e51c42cc091"
  ],
  "author": {
    "name": "Zimuzo Ezeozue",
    "email": "zezeozue@google.com",
    "time": "Wed Oct 14 11:48:03 2026 +0000"
  },
  "committer": {
    "name": "Zimuzo Ezeozue",
    "email": "zezeozue@google.com",
    "time": "Wed Oct 14 11:48:03 2026 +0000"
  },
  "message": "tp: speed up loading of perfetto exports\n\nLoading a perfetto export spent most of its time copying column data\nout of the archive and doing work at EOF which most sessions never use.\n\n- Alias numeric column buffers directly in the (mmap-backed) trace blob\n  instead of copying them: Arrow buffers are aligned, so when the\n  values are contiguous Slab::FromShared wraps them with copy-on-write\n  semantics in FlexVector. Pages are only faulted in when queried.\n- Coalesce adjacent slices of the same TraceBlob in\n  TraceBlobViewReader so tables spanning ReadTrace chunk boundaries\n  stay contiguous (and therefore zero-copy).\n- Compute trace bounds lazily via __intrinsic_trace_start/end instead\n  of rebuilding a _trace_bounds table, and use the first row of\n  ts-sorted tables rather than scanning them.\n- Build the static dataframe indexes on first use (thread-safely via\n  std::call_once) rather than sorting them all at EOF.\n- Skip DeobfuscationTracker work when there are no mapping packets.\n\nOn a 285 MB Android trace (532 MB export, 1M slices) export load goes\nfrom 540 ms to 270 ms (raw proto load: 6.2 s).\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "160c43143eaeebc3b6d79221897123f8682a4541",
      "old_mode": 33188,
      "old_path": "src/trace_processor/core/dataframe/arrow_deserializer.cc",
      "new_id": "e55985fda28855fb373e7546f5143b4017992dcc",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/dataframe/arrow_deserializer.cc"
    },
    {
      "type": "modify",
      "old_id": "4e501d73d716eada4e68dcc680cdc943129d3f8b",
      "old_mode": 33188,
      "old_path": "src/trace_processor/core/dataframe/types.h",
      "new_id": "eaa105d3f5d1435b819bd5ee4754790ea1341dc5",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/dataframe/types.h"
    },
    {
      "type": "modify",
      "old_id": "f2e108b973b304e4e1b3405e6a24c717c1adf869",
      "old_mode": 33188,
      "old_path": "src/trace_processor/core/util/flex_vector.h",
      "new_id": "0dce51eb4321091aca3c5fe9e77028885eba3949",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/util/flex_vector.h"
    },
    {
      "type": "modify",
      "old_id": "11d825f078489f10feaf8361060e304e77fd1f9a",
      "old_mode": 33188,
      "old_path": "src/trace_processor/core/util/slab.h",
      "new_id": "c3c8a2eda5c24c00cf0058ea14a7030b931a0833",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/util/slab.h"
    },
    {
      "type": "modify",
      "old_id": "27a83fff65af181a99449665416b23147a0ad945",
      "old_mode": 33188,
      "old_path": "src/trace_processor/importers/proto/deobfuscation_tracker.cc",
      "new_id": "60fb938153b2c189c4822e0cad0cd045b1fa681f",
      "new_mode": 33188,
      "new_path": "src/trace_processor/importers/proto/deobfuscation_tracker.cc"
    },
    {
      "type": "modify",
      "old_id": "db7bff78ca725fd4899c631a82bc947c5926ca92",
      "old_mode": 33188,
      "old_path": "src/trace_processor/perfetto_sql/stdlib/prelude/before_eof/trace_bounds.sql",
      "new_id": "3c08118cd0f46ffcbe6f8ae88f5c3ce3df81b03b",
      "new_mode": 33188,
      "new_path": "src/trace_processor/perfetto_sql/stdlib/prelude/before_eof/trace_bounds.sql"
    },
    {
      "type": "modify",
      "old_id": "d8228460a272c3aea87f7c2d23b2bd64fde51271",
      "old_mode": 33188,
      "old_path": "src/trace_processor/plugins/storage_tables/storage_tables.cc",
      "new_id": "6a0b8a0d69651665836bbbd15f764bb38cb510ee",
      "new_mode": 33188,
      "new_path": "src/trace_processor/plugins/storage_tables/storage_tables.cc"
    },
    {
      "type": "modify",
      "old_id": "d0bba8f312336d11f6739bba4e7e9c3576bf1a64",
      "old_mode": 33188,
      "old_path": "src/trace_processor/trace_processor_impl.cc",
      "new_id": "422ab676770f1377b4144491823fff2452825c03",
      "new_mode": 33188,
      "new_path": "src/trace_processor/trace_processor_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "ab807e0a1d139ad7944e64b1c657e566bc40c3c1",
      "old_mode": 33188,
      "old_path": "src/trace_processor/trace_processor_impl.h",
      "new_id": "62db205c47eed60dd1a8aed9ebe4284dec4f8ac5",
      "new_mode": 33188,
      "new_path": "src/trace_processor/trace_processor_impl.h"
    },
    {
      "type": "modify",
      "old_id": "f6093b74efd747650ad74c347e1cd0c11e831368",
      "old_mode": 33188,
      "old_path": "src/trace_processor/util/trace_blob_view_reader.cc",
      "new_id": "5d44c57fb54ba824c3ac2d2fc0d844ee86fb4a83",
      "new_mode": 33188,
      "new_path": "src/trace_processor/util/trace_blob_view_reader.cc"
    }
  ]
}
