2011-11-06 19 views
10

我目前正在寫一個客戶端JavaScript應用程序執行圖像處理。它目前執行的一些操作在瀏覽器中運行非常緩慢(以2-3秒爲單位)node.js與客戶端Javascript(與Chrome/V8相比)是否具有任何性能優勢?

我期望實現的一個解決方案是讓客戶端通過websocket從a接收結果信息服務器(websocket,而不是AJAX,因爲它需要顯示實時信息等),並讓服務器完成圖像處理的繁重工作。

Node.js是一個明顯的候選人,也是用Javascript編寫的 - 但我的第一個想法是沒有性能優勢(我的客戶端在Chrome/V8中運行,而Node.js也是在V8中) - 我是否認爲這是正確的?或者Chrome的用戶界面是否需要在服務器端不會感覺到客戶端的性能損失? (例如,Chrome是否在後臺執行了更多的UI工作以保持一切響應,使得node.js服務器不會花費時間進行操作?)

node.js是否具有任何性能優勢,還是我最好研究C或Java Web套接字服務器來完成這項工作?

+0

由於您已經在JavaScript中編寫了代碼,因此我建議您嘗試一下Node.js並親自查看。它不應該花費很多努力。 –

+0

@FelixKling儘管它已經在Javascript中了,但是它仍然需要相當多的工作來將現有的代碼拆分成適當的帶有websockets的客戶端/服務器 - 我絕對想要找到一些性能信息。在做這樣的事情之前 –

+0

Node.js不適合做圖像操作的繁重工作。但它是將ImageMagick作爲子進程調用的正確工具。 – generalhenry

回答

4

客戶端可能是更好的地方做圖像處理,如果你正在做它的JavaScript。關於客戶端的好處是,你已經擁有了處理器(主要是)給自己......如果你有20個人同時進行圖像處理,他們將在20臺機器上完成。

顯然有些地方在服務器上進行圖像處理會更有意義,在這種情況下,考慮使用javascript以外的東西可能會很明智。服務器上的V8運行速度不會比客戶端快得多,並且節點並非真正用於CPU密集型任務。

可能有一些有趣的情況,你需要在客戶端上做交互式的東西,然後在服務器上做最後的東西,在這種情況下,節點有很大的好處,因爲你可以使用相同的代碼。

+0

雖然客戶數量等對這個項目來說不是太重要(聽起來很奇怪,我知道)我認爲這最接近回答我的問題,謝謝 –

1

根據唯一的javascript執行速度,您不應該確定您將在服務器或客戶端上進行計算的位置。

更重要的是您的估計客戶端(臺式機或移動設備),服務器容量以及估計的平均和峯值負載等。

相關問題