GithubHelp home page GithubHelp logo

bevry-archive / readdir-cluster Goto Github PK

View Code? Open in Web Editor NEW
10.0 2.0 2.0 699 KB

Use multiple CPU cores via clusters for the fastest way to read nested directories and their stats

License: Other

JavaScript 9.90% TypeScript 90.10%
readdir nodejs cluster

readdir-cluster's People

Contributors

balupton avatar dependabot-preview[bot] avatar dependabot[bot] avatar github-actions[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

odnodn

readdir-cluster's Issues

Figure out if batch work for the cluster workers is even faster

Right now we send each task for the worker individually, this may incur a communication cost, perhaps we can batch the tasks or queue the tasks so that instead of sending each task to the worker individually, we send a batch of 10 at a time, or however many we have queued up while the worker was running, this may reduce communication cost and increase performance at the cost of additional complexity.

generalise to run provided async function on all files?

I have a use case where I'd like the MD5 hashes of each file. I was about to request that, but then I realised other use cases might want different types of hashes, and other use cases might need something else entirely.

Is it possible to make this run an alternative function in the worker, provided by the consumer of this project (instead of hard coded in this project)?

Is this something you'd accept a PR for?

Fallback to non-cluster readdir if not in master process

Using node -e "require('readdir-cluster')(process.cwd(), console.log, console.log)" will fail as the node eval will mean readdir-cluster does not run in the master process, so cluster.setupMaster does not exist. In such circumstances, which we cannot control, we should fallback gracefully, either to spawn #3 or a normal readdir.

TypeError: cluster.setupMaster is not a function

TypeError: cluster.setupMaster is not a function
    at openWorkers (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/source/index.js:31:11)
    at module.exports (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/source/index.js:75:2)
    at EventEmitterGrouped.<anonymous> (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/source/test.js:25:3)
    at ambi (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/node_modules/ambi/out/lib/ambi.js:55:18)
    at Domain.fireMethod (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/node_modules/taskgroup/out/lib/taskgroup.js:385:23)
    at Domain.run (domain.js:221:14)
    at EventEmitterGrouped.Task.fire (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/node_modules/taskgroup/out/lib/taskgroup.js:423:27)
    at Immediate._onImmediate (/Users/balupton/Projects/esnextguardian-to-editions/readdir-cluster/node_modules/taskgroup/out/lib/taskgroup.js:440:26)
    at tryOnImmediate (timers.js:543:15)
    at processImmediate [as _immediateCallback] (timers.js:523:5)

Your .dependabot/config.yml contained invalid details

Dependabot encountered the following error when parsing your .dependabot/config.yml:

The property '#/update_configs/0/automerged_updates/0/match/update_type' value "security" did not match one of the following values: all, security:patch, semver:patch, semver:minor, in_range

Please update the config file to conform with Dependabot's specification using our docs and online validator.

See if just using spawn is faster than clusters

@jokeyrhyme: You may not necessarily need to use the cluster module, as you don't need port-level load-balancing for this (as you don't even open ports). I wonder if just using the childProcess built-in instead would be faster?

This is a good point. PR and performance comparison welcome.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.