SkillAgentSearch skills...

Pambdajs

Parallelized Lambda, the wrapper to help run lambda/anonymous function in parallel. 🚀

Install / Use

/learn @tim-hub/Pambdajs
About this skill

Quality Score

0/100

Supported Platforms

Zed

README

PambdaJS - Multi-Process Has Never Been This Easy

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 half 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

Related Skills

View on GitHub
GitHub Stars28
CategoryDevelopment
Updated2y ago
Forks0

Languages

TypeScript

Security Score

80/100

Audited on May 19, 2023

No findings