Files
SpeedScope/src
Jamie Wong 21167e69d8 Support importing profiles whose contents exceed V8s maximum string size (#385)
Browsers have a limit on how big you can make strings. In Chrome on a 64 bit machine, this is around 512MB, which explains why in #340, a 600MB file fails to load.

To work around this issue, we avoid making strings this large.

To do so, we need two core changes:
1. Instead of sending large strings as the import mechanism to different file format importers, we introduce a new `TextFileContent` interface which exposes methods to get the lines in the file or the JSON representation. In the case of line splitting, we assume that no single line exceeds the 512MB limit.
2. We introduce a dependency on https://github.com/evanw/uint8array-json-parser to allow us to parse JSON files contained in `Uint8Array` objects

To ensure that this code doesn't code rot without introducing 600MB test files or test file generation into the repository, we also re-run a small set of tests with a mocked maximum string size of 100 bytes. You can see that the chunked string representation code is getting executed via test coverage.

Fixes #340
2022-05-16 23:11:13 -07:00
..
2021-03-28 16:08:15 -07:00

Speedscope TypeScript source

This directory contains the bulk of speedscope's source code.

Subdirectories

  • gl/: WebGL code. This includes e.g. the code to render flamecharts.
  • import/: Code to import profiles from varous profilers into speedscope. This include e.g. the code to import Chrome performance profiles.
  • lib/: Mostly dependency-less utilities. This includes e.g. an LRU cache implementation, basic linear algebra classes, and the definition of speedscope's file format.
  • app-state/: Speedscope's application state management
  • typings/: TypeScript definition files
  • views/: View code to generate the HTML & CSS used to construct the UI. Implemented using preact and aphrodite.