可能重複:
Using Parallel Extensions In Web Applications並行代碼適用於基於Web的應用程序嗎?
由於CPU是不是越來越快,但越來越多內核,並行是去上桌面應用程序性能更好的方式,但我不是當然,如果基於網絡的應用程序也是如此。
Web服務器必須旋轉大量線程才能處理所有Web請求,因此以並行方式編寫應用程序(例如排序,搜索等算法)有助於提高性能,還是實際上可能會影響它?
我特別使用ASP.Net,但我認爲這個問題是任何有效的平臺。
可能重複:
Using Parallel Extensions In Web Applications並行代碼適用於基於Web的應用程序嗎?
由於CPU是不是越來越快,但越來越多內核,並行是去上桌面應用程序性能更好的方式,但我不是當然,如果基於網絡的應用程序也是如此。
Web服務器必須旋轉大量線程才能處理所有Web請求,因此以並行方式編寫應用程序(例如排序,搜索等算法)有助於提高性能,還是實際上可能會影響它?
我特別使用ASP.Net,但我認爲這個問題是任何有效的平臺。
我要做出的任何操作,你正在考慮並行需要被同步完成的假設(排序,搜索):在這種情況下,我不知道它總是意味着更好的性能,可能會降低性能。以下是我爲什麼推理。舉例來說,您的應用在託管20個其他Web應用的服務器上運行的環境。如果它全部在一個線程中,服務器將一次處理它並返回結果。如果將其分割爲並行線程,某些線程可能會完成,但其他一些線程可能會滯留在來自其他應用程序的線程之後。因此即使CPU週期數可能接近相同,總響應時間也會變慢。但是,如果你的操作可以異步完成(比較繁重的計算,顯示優化算法),我會建議看看它在客戶端分裂成多個請求,然後觸發幾個Ajax請求,然後由不同的服務提供不同的請求並行Web服務器(在負載平衡的Web場中),並在客戶端將結果混合在一起。
希望有幫助!
在使用服務器CPU的情況下 - 它可能很有用。 但利用用戶的pc cpu是錯誤的做法 - 這可能是非常危險的。
PS我希望這篇文章在MSDN博客會幫助你。 [link]
你是什麼意思「錯誤的做法,以利用用戶的電腦CPU」? – 2011-02-24 16:35:56
我的意思是,該網站必須是單個線程到最終用戶。沒有繁重的計算,沒有平行的JavaScript(將來可能會變得真實),沒有閃光橫幅等。網站必須儘可能輕量級。 – 2011-02-24 18:05:20
我懷疑最初的假設。 CPU越來越快。每核心性能正在提高,但不一定達到它的速度。
Web應用程序傾向於按順序執行許多前端任務......這並不是說某些操作不能從多線程中受益,但它非常依賴於工作負載,它可以如何分裂。搜索和排序等操作最適合在大型數據集上進行線程處理,這對於Web應用程序來說並不常見。在許多情況下(當涉及大量數據時),數據庫服務器將在到達Web服務器之前完成併線程化。
它更常見的發現後端進程,這是由web請求觸發,執行多線程批量操作。他們通常可以從批處理中的多線程中獲益很大,並且易於分割工作性質。
如果你的Web應用程序在很大程度上模塊化的,基於CMS例如一個組件,或從多個來源聚合數據的應用程序,或執行批處理操作的服務,那麼多線程可以提供顯著待遇。但您也正在放大每個請求的佔用空間。你真的想要一個Web請求綁定10個數據庫連接嗎? (例如)
也許你會這樣做。我不知道我會:)
呃,我發現了一個非常類似的問題http://stackoverflow.com/questions/377963/using-parallel-extensions-in-web-applications,雖然我認爲標題是有點過於局部化..我投票結束我的問題,而不是刪除,因爲我認爲不同的措辭可能有助於其他人有相同的疑問 – 2011-02-24 16:19:59