È nodoso.js per problemi algoritmici come TSP o colorazione di grafi o problemi di copertura esatta una buona decisione?

2

Ho letto sul sito ufficiale di node.js che Node.js è un tempo di esecuzione JavaScript creato sul motore JavaScript V8 di Chrome. Node.js utilizza una modalità I / O non bloccata basata sugli eventi e altamente scalabile per le applicazioni di rete. E alcuni thread ho letto che non è per le attività ad alta intensità di CPU. Significa che non è una buona idea usare node.js per risolvere problemi come TSP, copertura esatta o colorazione del grafico?

    
posta Satish Patel 30.10.2015 - 07:16
fonte

2 risposte

5

Il modello di eventi predefinito per Node.JS è il multitasking cooperativo a thread singolo. Se si esegue il collegamento I / O, Node.JS può semplicemente accettare nuove richieste mentre il proprio è in attesa del completamento della chiamata al database. Ma se sei legato alla CPU, mastichi i cicli di clock mentre altre richieste devono aspettare.

Ci sono, naturalmente, modi per aggirare questo. Un modo è quello di creare nuovi thread per gestire i calcoli a lungo termine, proprio come faresti in qualsiasi altra applicazione. Ciò elimina il carico multitasking sul sistema operativo, che presenta migliori funzionalità per il multitasking. Poiché è tutto Javascript, puoi eseguirne alcuni sul server e alcuni di essi nel browser.

Ci sono alcune complicazioni, ovviamente. Puoi scoprire in dettaglio cosa sono e come funzionano nell'articolo che link qui sotto.

Ulteriori letture
Perché dovresti usare Node.JS per i task intensivi della CPU .

    
risposta data 30.10.2015 - 07:32
fonte
3

Puoi usare node.js per calcolare quello che vuoi, anche problemi di TSP o colorazione del grafico. Ad esempio, ho implementato un sacco di problemi Project Euler in node.js solo allo scopo di imparare Javascript, e sono rimasto stupito dalla velocità, che è paragonabile ad altre implementazioni linguistiche compilate con JIT, molto meglio delle esperienze che ho avuto con altri linguaggi di scripting come Python o Perl.

Tuttavia, se node.js è una scelta "abbastanza buona" per il tuo caso d'uso, o se ci sono alternative migliori è una domanda completamente diversa. Ciò dipende molto da fattori non funzionali come se si desidera eseguire il programma come parte di un servizio Web, il numero di calcoli simultanei che è necessario elaborare, la necessità di multithreading, la necessità di riutilizzare le librerie esistenti e così via.

    
risposta data 30.10.2015 - 08:48
fonte

Leggi altre domande sui tag