Skip to content

Bring in a faster Transform stream  #147

Open

Description

@mcollina

https://github.com/mcollina/syncthrough offers 3x the throughput of Transform. https://www.npmjs.com/package/minipass offer similar characteristics.

I think bringing in a faster set of Streams that enforce backpressure would speed up an area of Node.js that is showing its time.

Activity

  1. rluvaton commented on Feb 9, 2024

    @rluvaton
    Member

    I don't think we should have another stream implementation, this will be confusing and need to maintain multiple implementations for complex topic

  2. ronag commented on Feb 9, 2024

    @ronag
    Member

    There is room to further optimize stream.Transform to be close to synchthrough. To begin with we should avoid the double buffering and implement stream.Transform as a stream.Readable with stream.Writable compatible api.

  3. ronag commented on Feb 9, 2024

    @ronag
    Member

    Also rather than adding another stream api, I think we should add support for sync functions in pipeline, i.e.

    stream.pipeline(src, val => val.toUpperCase(), res)
    
  4. mcollina commented on Feb 9, 2024

    @mcollina
    SponsorMemberAuthor

    There is room to further optimize stream.Transform to be close to synchthrough. To begin with we should avoid the double buffering and implement stream.Transform as a stream.Readable with stream.Writable compatible API.

    I would love this, whoever the world depends on _readableState and _writableState. If you have ideas, I'm all ears.

    Also rather than adding another stream api, I think we should add support for sync functions in pipeline

    @ronag that would have almost the same effect. Maybe we could internalize SyncThrough or analog and use ti to support pipeline

  5. rluvaton commented on Feb 11, 2024

    @rluvaton
    Member

    @ronag I remember u had some pr to remove the double buffering but stopped, do you remember what blocked you?

  6. ronag commented on Feb 11, 2024

    @ronag
    Member

    @ronag I remember u had some pr to remove the double buffering but stopped, do you remember what blocked you?

    Time was a blocker.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions