feat(runtime,serverless): add V8 heap snapshots #591
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a
build.rs
incrates/serverless
to generate asnapshot.bin
file containing a V8 heap snapshot of thejs-runtime
code, which is then used when booting isolates (which only contains the user's code). It's not mandatory to use a snapshot to start a Lagon runtime, but it currently reduces the cold start by a lot. Here's a before/after running 6 times a cold start:Before (or by not providing a V8 snapshot):
After, providing a V8 snapshot:
The first cold start goes from ~5ms to ~3ms, and subsequent cold starts goes from ~3ms to ~800us.
About
Following #255:
ignore-snapshot
featureglobalThis.LagonSync
andglobalThis.LagonAsync
, because async bindings can't be serialized - only sync bindings are