Experiment 03 · Transferable objects

The Browser uses the structured clone algorithm to pass data in/out of Workers; it supports complex data types, such as File, Blob, ArrayBuffer, but the copy can take hundreds of milliseconds for large objects. Transferable objects can be transfered from one context to the other; it is a zero-copy.

In this experiment, we apply different filters to copies of a source image, the heavy-lifting of the filtering is delegated to a worker, and the ImageData is passed in/out as a Transferable object. We wanted to check whether or not it works in different desktop and mobile browsers – it seems well supported.

Source image

Filtered images

Supported by Safari 12 and Firefox 64 and Chrome 71 out-of-the box.