2011-11-06 11 views
10

Attualmente sto scrivendo un'app javascript sul lato client che esegue la manipolazione delle immagini. Alcune delle operazioni che esegue al momento sono piuttosto lente per essere eseguite nel browser (in ordine di 2-3 secondi)node.js presenta vantaggi prestazionali rispetto a Javascript lato client (rispetto a Chrome/V8)?

Una soluzione che sto cercando di implementare è far sì che il client riceva informazioni sui risultati tramite una ragnatela da un server (websocket piuttosto che AJAX perché ha bisogno di visualizzare informazioni in tempo reale, ecc.) e fare in modo che il server elimini la manipolazione dell'immagine

Node.js è un candidato ovvio scritto anche in Javascript - tuttavia il mio primo pensiero è che non ci saranno vantaggi in termini di prestazioni (la mia parte client è in esecuzione in Chrome/V8 e Node.js è anche V8) - ho ragione a pensarlo? O l'interfaccia utente di Chrome richiede perdite di prestazioni sul client che non saranno percepite sul lato server? (ad es. Chrome fa funzionare più UI in background per mantenere tutto reattivo che un server node.js non impiegherebbe a fare il suo tempo?)

Will node.js ha qualche vantaggio in termini di prestazioni, o sto meglio guardare nei server socket Web C o Java per fare il lavoro?

+0

Come hai già scritto il codice in JavaScript, ti suggerisco di provare Node.js e vedere di persona. Non dovrebbe richiedere così tanto sforzo. –

+0

@FelixKling Anche se è già in Javascript come dici tu, ci vorrà ancora un bel po 'di lavoro per dividere il codice esistente in client/server corretto con websocket - Voglio assolutamente trovare alcune informazioni sulle prestazioni. prima di fare una cosa del genere –

+0

Node.js non è il posto giusto per fare il grande lavoro di manipolazione delle immagini. Ma è lo strumento giusto per chiamare ImageMagick come un processo figlio. – generalhenry

risposta

4

Il client è probabilmente il luogo migliore per eseguire la manipolazione delle immagini se lo si fa in javascript. La cosa bella del client è che hai il processore (per lo più) per te stesso ... se hai 20 persone che fanno la manipolazione delle immagini in una volta, lo faranno su 20 macchine.

Ci sono ovviamente alcuni posti dove ha più senso fare manipolazioni di immagini sul server, e in quei casi potrebbe essere intelligente considerare di usare cose diverse da javascript. V8 sul server non verrà eseguito molto più velocemente rispetto al client, e il nodo non è fatto per le attività intensive della cpu.

Probabilmente ci sono alcuni casi interessanti in cui vorrete fare cose interattive sul client, e poi fare le cose finali sul server, e in questo caso c'è un grande vantaggio per il nodo, dal momento che è possibile utilizzare il stesso codice.

+0

Sebbene la quantità di client ecc. Non sia troppo importante per questo progetto (sembra strano), ritengo che questo sia il più vicino a rispondere alla mia domanda, grazie –

1

Non si deve determinare dove si faranno calcoli su server o client, in base alla sola velocità di esecuzione javascript.

Molto più importanti sono cose come i client stimati (desktop o mobile), la capacità del server e il carico medio e di picco stimato.