1.1.1 • Published 4 years ago

pambdajs v1.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

PambdaJS - Empower Multi-Process Easily

npm version TEST Passing codecov

Parallelized Lambda, a wrapper to help run lambda/anonymous function in parallel easily.

PambdaJS is to orchestrate different child process to finish one heavy iteration work.

  • make multi process programming easily
  • gain better performance through empowering multi core CPU

Start to use PambdaJS

import pambda from 'pambdajs';
const p = await pambda.init(5);

data = [1,2,3];
const heavyWork = (x) => {
    return x+x;
}
// original single process way
const singleProcess = () => {
  data.map(heavyWork);
}

// PambdaJS multi process way
const pambdaProcess = async () => {
  await p.map(heavyWork, data);
}

Features

Run your own anonymous functions in Parallel.

  • map
  • filter
  • reduce

Limit

The lambda function itself has to be a pure function, and it has to use only node build-in packages.

for example:

// good
const heavyWork = (x) => {
    return x+x;
}


// bad
const sumItSelf = (x) => {
    return x + x;
}

const heavyWork = (x) => {
    return sumItSelf(x)
}

Performance

  • PambdaJS can save up to 55% of processing time. (Diagram ↓)

PambdaJS performance As you can see the above.

  • The best case to repeat summing 10k number 100k times, is to spawn 5 child process, and it saves more than hald of time than single process.

  • Besides, for simple work, multi process does not help at all. So make sure usig PambdaJS for heavy work only. (more diagrams)

FAQ

  • Why not use child process directly?

    Yeah, why not. child_process is the native module of Node, if you seek better flexibility, use child_process. However, if you want to make your life easier, trust me use PambdaJS, you do not need to worry about the message between child and parent process anymore.

  • Does it run on browser as well?

    No, PambdaJS is a tool for Node environment, not for browser, because browser does not support multi-process, but you can try web worker which is multi-thread solution. or Gpu.js which is using GPU instead of CPU for getting better performance.

Reference

1.0.0-beta.1

4 years ago

1.0.0-alpha.4

4 years ago

1.0.0-alpha.3

4 years ago

1.0.0-alpha.2

4 years ago

1.0.0-alpha.1

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago