-
1 # 老扎古
-
2 # 繁星落石
無法比較。
這應該算是兩個維度的最佳化方法而且兩者並不衝突。
演算法指的是程式的執行邏輯,這個不管是單執行緒還是多執行緒都會遇到演算法最佳化的問題,包括降低演算法的時間複雜度,提高演算法的精簡程度等等。
多執行緒是一種並行的最佳化方法,需要說明的是不是所有程式的所有部分都能使用多執行緒。多執行緒要求執行緒間的依賴程度不會太高,可以獨立執行,否則一個執行緒等另外一個執行緒就會拖慢多執行緒的速度。
兩種方法是可以巢狀使用的,比如在多執行緒基礎上再次最佳化程式碼邏輯,可能可以進一步提高程式的執行速度。
-
3 # 鋼板俠
這個問題不像一個問題……就說演算法的重要性吧——舉一個簡單的例子:用電腦檢驗n是不是質數,一般人會從2試到n,高手會從2試到n/2,大神會從2試到n的平方根就可以了,骨灰級大師會直接用指令碼從專業算質數的網站上去檢查有沒有那個質數所用時間和記憶體空間急劇下降。n越大越明顯
-
4 # Bean蠶豆
個人的看法是這兩個其實不能直接拿來比較,不在一個空間上,嚴格意義上演算法的執行可以單執行緒被執行或者多執行緒被執行,下面我們來詳細瞭解一下。
演算法與執行緒的概念演算法什麼是演算法,演算法是指解決方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的機制。演算法中的指令描述的是一個計算,當其執行時能從一個狀態轉換成另一個狀態。
執行緒在描述執行緒前,我們需要先了解程序,程序是系統資源分配的最小單位。系統是由一個個程式,也就是程序組成的。
執行緒是CPU除錯的最小單位。如果程序是一個容器,執行緒就是執行在容器裡面的程式,執行緒是屬於程序的,同一個程序的多個執行緒共享程序的記憶體地址空間。
執行緒間的通訊可以直接透過全域性變數進行通訊,所以相對來說,執行緒間通訊是不太安全的,因此引入 了各種鎖的場景。當一個執行緒崩潰時,會導致整個程序也崩潰,即其他執行緒也處於掛起狀態,但多程序就不會,一個程序掛了,另一個程序依然照樣執行。在多核作業系統中,預設程序內只有一個執行緒,所以對多程序的處理就像是一個程序一個核心。
問題的理解透過上面對兩者概念的解釋,我想我們可以清楚,演算法的執行是透過程序獲得系統資源分配,可以理解為一次演算法的執行是一個程序,然後一個程序裡面可以允許是以多執行緒的方式還是單執行緒的方式去獲取CPU的資源。
綜合以上的描述,演算法和多執行緒哪個快的比較不在同一個空間,執行緒是整個演算法執行過程的一個步驟。演算法執行的效率,可以透過單執行緒或者多執行緒的兩種方式做比較。
回覆列表
我們先了解下這兩個的意思和關係
什麼是多執行緒?
多執行緒是指從軟體或者硬體上實現多個執行緒併發執行的技術,它更多的是解決CPU排程多個程序的問題,從而讓這些程序看上去是同時執行(實際是交替執行的)。
多執行緒解決的問題是明確的,也是比較單一的,基本上遇到的最大問題就是執行緒安全。在JAVA語言中,需要對JVM記憶體模型、指令重排等深入瞭解,才能寫出一份高質量的多執行緒程式碼。
什麼是演算法?
簡單地講,演算法是指一切經過明確定義的計算過程,其將某個或者某組值作為輸入內容,併產生某個或者某組值作為輸出結果。因此,演算法代表的是一系列計算步驟,用於將輸入轉換為輸出。
演算法有幾個特點:有明確指令,切實有效,有限的
幾個知名的演算法有:
傅利葉變換與快速傅利葉變換
迪傑斯特拉演算法
RSA 演算法
比例微積分演算法
隨機數生成演算法
太多了就不一一舉例了
這兩個哪個快這個確實沒有可比性,拋開場景及實現的情況,這樣說確實是不恰當的,