Udemy Course Multithreading, Concurrency & Performance 10

製作圖檔顏色轉換(下)-改造成multi-thread

ZONGRU Li
Jun 29, 2021

接著在前一節的程式內製作multi-thread處理的程式方法

依據高度將圖片分拆成Threads數量來處理顏色RGB轉換並輸出一樣結果

例如拆成4個Threads處理(概念圖)

建立Multi-Threads 處理Method:

接下來就可以比較跟前一節做的singleThread的Performance差異

在main裡面擷取系統時間來看多久跑完:

先跑singleThread的來看看時間多少毫秒:

singleThread執行花費時間

接著改寫multi-thread執行但是只給單一個Thread數處理

Multi-thread但是只給1個thread處理花費時間

稍微多了一點再做thread拆分合併的邏輯處理

接著再改成給拆分成2個threads處理

用Multi-thread並且給予分拆2個threads處理所花時間

3個:

4個:

並且確認圖片還是正常:

以下是講師的數據圖(物理4核加上8個虛擬核心數)

如上圖所以thread分成跟物理核心數一致都是4時,就可以達到最高效率

接著在拆分到包含虛擬核心數已經沒那麼有感的提高效能了

這其中也包含其他應用或背景程式執行可能也會占據部分CPU等效能

在大於8就已經沒有額外的效能變化了

並且在越大張的圖,6 threads與single-Thread處理速度比值如下

故越大張圖多Threads處理效率越快!

小張圖就用single-thread處理反而比較快!

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet