Re: [問題] 使用thread提升效率的問題
在各位大大的提點下
小弟將code修改如下:
原本的code function:
void* work_y_sobel()
{
for(int j=0; j<imgHeight; j++) {
for(int i=0; i<imgWidth; i++)
{
pic_gx[3*(j*imgWidth+i)+MYRED] = gx_sobelFilter(i, j, MYRED)
pic_gx[3*(j*imgWidth+i)+MYGREEN] = gx_sobelFilter(i, j, MYGREEN);
pic_gx[3*(j*imgWidth+i)+MYBLUE] = gx_sobelFilter(i, j, MYBLUE);
}
}
return NULL;
}
將上述的MYRED , MYGREEN , MYBLEU 分別變成一個fun,我只列出一個
void * work_y_sobel_r()
{
for(int j=0; j<imgHeight; j++)
for(int i=0; i<imgWidth; i++)
pic_gx[3*(j*imgWidth+i)+MYRED] = gx_sobelFilter(i, j, MYRED)
return NULL;
}
而我本來有三個for迴圈 每一個for迴圈拆成3個小的fun
所以總共變成9個小fun 其中六個彼此獨立,所以先下去跑,跑完才跑最後三個加總部分
修改完後,的確效率有變比較好
3個thread時: 2秒 //每一個thread 個別跑上面原始未修改的for loop
6個thread時: 1.4秒左右
9個thread時: 1.1~1.2秒左右
但我的問題是 原始版本 也就是沒有thread的情況下 是跑0.8秒
而原始版本是將三個for迴圈 全部寫在main裡面
有點百思不得其解 所以又來請大大們鞭我 給我一點提示>"<
謝謝><"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.168.197
→
12/06 21:42, , 1F
12/06 21:42, 1F
→
12/07 03:10, , 2F
12/07 03:10, 2F
→
12/07 03:10, , 3F
12/07 03:10, 3F
→
12/07 03:13, , 4F
12/07 03:13, 4F
→
12/07 03:14, , 5F
12/07 03:14, 5F
→
12/07 03:15, , 6F
12/07 03:15, 6F
→
12/07 03:18, , 7F
12/07 03:18, 7F
→
12/07 03:19, , 8F
12/07 03:19, 8F
→
12/07 03:21, , 9F
12/07 03:21, 9F
→
12/07 03:22, , 10F
12/07 03:22, 10F
→
12/07 03:22, , 11F
12/07 03:22, 11F
→
12/07 03:23, , 12F
12/07 03:23, 12F
→
12/07 11:04, , 13F
12/07 11:04, 13F
※ 編輯: keke0421 來自: 114.37.180.68 (12/07 23:42)
→
12/08 01:09, , 14F
12/08 01:09, 14F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
4
22
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章