2011-11-06 5 views
10

Obecnie piszę aplikację javascript po stronie klienta, która wykonuje manipulację obrazem. Niektóre z operacji, które wykonuje obecnie, są dość powolne w przeglądarce (rzędu 2-3 sekund).Czy node.js ma przewagę wydajności nad JavaScriptem po stronie klienta (w porównaniu z Chrome/V8)?

Jednym z rozwiązań, które zamierzam wdrożyć, jest uzyskanie od klienta informacji o wyniku za pośrednictwem serwer (websocket, a nie AJAX, ponieważ musi wyświetlać informacje w czasie rzeczywistym itp.) i pozwolić serwerowi na ciężkie podnoszenie manipulacji obrazem.

Node.js jest oczywistym kandydatem również napisanym w JavaScript - jednak moją pierwszą myślą jest że nie będzie żadnej przewagi wydajności (moja strona klienta działa w Chrome/V8, a Node.js to także V8) - czy mam rację, myśląc o tym? A może interfejs użytkownika Chrome wymaga strat wydajności na kliencie, które nie będą odczuwane po stronie serwera? (np. czy Chrome działa w tle w większej liczbie funkcji UI, aby wszystko działało prawidłowo, a serwer node.js nie spędzałby czasu?)

Czy node.js ma jakąkolwiek przewagę wydajnościową, czy lepiej dla mnie zajrzeć do serwerów gniazd C lub Java, aby wykonać pracę?

+0

Jak już napisałeś kod w JavaScript, proponuję dać Node.js spróbować i przekonaj się sam. Nie powinno to wymagać dużego wysiłku. –

+0

@FelixKling Chociaż jest już w JavaScript, jak mówisz, będzie to wymagało sporo pracy, aby podzielić istniejący kod na właściwy klient/serwer za pomocą stron internetowych - na pewno chcę znaleźć informacje o wydajności. przed zrobieniem takiej rzeczy –

+0

Node.js nie jest właściwym miejscem do robienia ciężkiego liftingu manipulacji obrazem. Jest to jednak odpowiednie narzędzie do wywoływania ImageMagick jako procesu potomnego. – generalhenry

Odpowiedz

4

Klient jest prawdopodobnie lepszym miejscem do manipulacji obrazem, jeśli robisz to w javascript. Zaletą klienta jest to, że masz procesor (głównie) dla siebie ... jeśli masz 20 osób zajmujących się manipulacją obrazem naraz, będą to robić na 20 komputerach.

Istnieje oczywiście kilka miejsc, w których bardziej sensowne jest manipulowanie obrazem na serwerze, a w takich przypadkach rozsądne może być rozważenie używania rzeczy innych niż javascript. V8 na serwerze nie będzie działał znacznie szybciej niż na kliencie, a węzeł nie jest tak naprawdę przeznaczony do intensywnych zadań cpu.

Prawdopodobnie istnieje kilka interesujących przypadków, w których będziesz chciał zrobić interaktywne rzeczy na kliencie, a następnie zrobić ostatnie rzeczy na serwerze, iw takim przypadku jest duża zaleta dla węzła, ponieważ możesz użyć ten sam kod.

+0

Chociaż ilość klientów itp. Nie jest zbyt ważna dla tego projektu (brzmi to dziwnie, wiem), myślę, że to jest najbliższe odpowiedzi na moje pytanie, dziękuję –

1

Nie powinieneś określać, gdzie będziesz wykonywać obliczenia na serwerze lub kliencie, w oparciu o jedyną prędkość wykonywania javascript.

Znacznie ważniejsze są takie rzeczy, jak szacowani klienci (komputery stacjonarne lub komórkowe), pojemność serwera oraz szacowane średnie i szczytowe obciążenie.

Powiązane problemy