You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
samples/isolate_example
Miguel Beltran 93db48966c
Explicit import for Platform and kIsWeb (#1898)
1 year ago
..
android Update `sdk` constraint range and update runners (#1706) 2 years ago
ios Update `sdk` constraint range and update runners (#1706) 2 years ago
lib Explicit import for Platform and kIsWeb (#1898) 1 year ago
linux Update `sdk` constraint range and update runners (#1706) 2 years ago
macos Update `sdk` constraint range and update runners (#1706) 2 years ago
test Landing beta changes in master for the new stable release (#747) 4 years ago
windows Update `sdk` constraint range and update runners (#1706) 2 years ago
.gitignore Quarterly maintenance on isolate_example (#142) 5 years ago
.metadata Update `sdk` constraint range and update runners (#1706) 2 years ago
README.md isolate_example: Update filenames in README.md (#634) 4 years ago
analysis_options.yaml Create `analysis_defaults` package (#1654) 2 years ago
codelab_rebuild.yaml Flutter 3.7.0 (#1556) 2 years ago
pubspec.yaml Update samples for Dart 3.0.0 (#1803) 2 years ago

README.md

Isolate Example

A sample application that demonstrate best practices when using isolates.

Goals

  • Display the performance benefits of isolates when using them in the right situation.
  • Show how to use the compute method for straightforward computations.
  • Demonstrate how to initialize and use an isolate.
  • Show the cost of moving data between isolates and provide alternatives.

The important bits

performance_page.dart

Compares running a large computation on the main isolate with running the same calculation on a second isolate. When the main isolate is used, Flutter is unable to render new frames, and the SmoothAnimationWidget's animation freezes.

infinite_process_page.dart

Creates an isolate used to run an infinite loop that sums batches of 100M randomly generated numbers at a time. Users can start, terminate, pause, and resume the isolate, as well as modify how the calculation is performed.

data_transfer_page.dart

Demonstrates how expensive it is to move large amounts of data between isolates and a better alternative to move data. This page creates an isolate that can add up a list of numbers and gives users three options for how to provide it with input:

  • Send values normally using a List
  • Send the values using TransferableTypedData
  • Generate the values on the second isolate, so no copying is necessary

Users can then compare the performance of each approach using the displayed timestamps.

Questions/issues

If you have a general question about any of the techniques you see in the sample, the best places to go are:

If you run into an issue with the sample itself, please file an issue in the main Flutter repo.