Skip to content
This repository was archived by the owner on May 3, 2022. It is now read-only.

Optimizations for clients & servers #237

Description

@Raynos

I'm working on a fat heavy branch and I'm keeping notes of optimizations that we should backport everywhere

  • use this inside constructors, v8 literally pattern detects for this.foo = x and NOT self.foo =x
  • use bucket based OutPending() data structure instead of naive dictionary
  • use write ahead to avoid calling RW.byteLength. buf.write() returns bytes written, and with our offset tracking we can always backtrack and set frame.writeUInt32BE(finalOffset, 0)
  • use TCP_WRAP if process.version === 0.10.32 to go 30% faster.
  • use 512kb SlowBuffer pool instead of new Buffer()
  • use the arg2str or arg2buf trick.
  • use the caching headers + writeHead() & writeTail() trick.
  • use utf8slice and utf8write.
  • avoid reading arg1 as slice when we only need string anyway.
  • thread offset through frame parsing to avoid SlowBuffer#slice where possible.

cc @jcorbin @rf @kriskowal

Activity

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