Reduce memory used when saving Performance data for offline viewing (#10034)
* Reduce memory used when saving Performance data for offline viewing
The Perfetto trace was exported as a JSON array of numbers, which makes
jsonEncode do roughly two string writes per trace byte and can exhaust the
browser's memory for large traces. Export it as a base64 string under a new
key instead, and keep reading the legacy list format so older files still
load.
Also:
- Only encode the bytes in a ByteData view when converting to base64.
- Allocate Uint8ListRingBuffer.merged once at its exact size.
- Show an error instead of crashing when the data is too large to export.
- Revoke the download Blob URL after the download starts.
Fixes #10010
* Link the PR in the release note
* Address review feedback on performance export
---------
Co-authored-by: Sam Rawlins <srawlins@google.com>