Skip to content

More concrete examples of "optimization" of pipeTo #359

Open
@tyoshino

Description

@tyoshino

Potential targets of optimization

Skipping JS processing between a ReadableByteStream and a WritableByteStream

Skip JS code invocation (write(), read(), etc.) and does the following internally.

Sink exposes a memory region for write

  1. destMemory = sink.getMemoryToWrite()
  2. source.generate(destMemory)
  3. sink.notifyWritten()

Source exposes a memory region where data for consuming is stored

  1. sourceMemory = source.getMemoryToRead()
  2. sink.consume(sourceMemory)
  3. source.notifyConsumed()

Both takes memory

  1. tempMemory = allocate()
  2. source.generate(tempMemory)
  3. sink.consume(tempMemory)

sendfile(2) style

  1. transfer(lowerLayerSourceDescriptor, lowerLayerSinkDescriptor)

Skipping an "identity" transform byte streams completely

a.pipeTo(id, options0);
id.pipeTo(b. options1);

Copy data from a to b directly.

Issues:

  • Thread-safety: a.pipeTo(id) and id.pipeTo(b) may happen in different threads.
  • How to observe bytes for ByteCountingIdentityTransformByteStream?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions