精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

雙核CPU上的快速排序效率

開發(fā) 前端
為了試驗一下多核CPU上排序算法的效率,得比較單任務情況下和多任務并行排序算法的差距,因此選用快速排序算法來進行比較。

為了試驗一下多核CPU上排序算法的效率,得比較單任務情況下和多任務并行排序算法的差距,因此選用快速排序算法來進行比較。

測試環(huán)境:雙核CPU 2.66GHZ

                    單核CPU 2.4GHZ

以下是一個快速排序算法的源代碼:

  1. UINTSplit(void **ppData, UINTuStart, UINTuEnd, 
  2.                      COMPAREFUNCCompareFunc) 
  3.     void *pSelData; 
  4.     UINTuLow; 
  5.     UINTuHigh; 
  6.   
  7.     uLow = uStart
  8.     uHigh = uEnd
  9.   
  10.     pSelData = ppData[uLow]; 
  11.     while ( uLow < uHigh ) 
  12.     { 
  13.         while ( (*CompareFunc)(ppData[uHigh], pSelData) > 0 
  14.             && uLow != uHigh ) 
  15.         { 
  16.             --uHigh; 
  17.         } 
  18.         if ( uHigh != uLow ) 
  19.         { 
  20.             ppData[uLow] = ppData[uHigh]; 
  21.             ++uLow; 
  22.         } 
  23.   
  24.         while ( (*CompareFunc)( ppData[uLow], pSelData ) < 0 
  25.             && uLow != uHigh ) 
  26.         { 
  27.              ++uLow; 
  28.         } 
  29.         if ( uLow != uHigh ) 
  30.         { 
  31.             ppData[uHigh] = ppData[uLow]; 
  32.             --uHigh; 
  33.         } 
  34.     } 
  35.     ppData[uLow] = pSelData; 
  36.   
  37.     returnuLow; 
  38.   
  39.   
  40. voidQuickSort(void **ppData, UINTuStart, UINTuEnd, 
  41.                         COMPAREFUNCCompareFunc) 
  42.     UINTuMid = Split(ppData, uStart, uEnd, CompareFunc ); 
  43.     if ( uMid > uStart ) 
  44.     { 
  45.         QuickSort(ppData, uStart, uMid - 1, CompareFunc); 
  46.     } 
  47.   
  48.     if ( uEnd > uMid ) 
  49.     { 
  50.         QuickSort(ppData, uMid + 1, uEnd, CompareFunc); 
  51.    } 

先測試一下這個快速排序算法排一百萬個隨機整數(shù)所花的時間:

  1. voidTest_QuickSort(void) 
  2.     UINTi; 
  3.     UINTuCount = 1000000; //1000000個 
  4.   
  5.     srand(time(NULL)); 
  6.     void **pp = (void **)malloc(uCount * sizeof(void *)); 
  7.     for ( i = 0; i < uCount; i++ ) 
  8.     { 
  9.         pp[i] = (void *)(rand() % uCount); 
  10.     } 
  11.   
  12.        clockclock_tt1 = clock(); 
  13.     QuickSort(pp, 0, uCount-1, UIntCompare); 
  14.        clockclock_tt2 = clock(); 
  15.   
  16.        printf("QuickSort 1000000 Time %ld/n", t2-t1); 
  17.   
  18.     free(pp); 

在雙核CPU2.66GHZ機器上運行測試程序,打印出花費的時間約為406 ms

在單核CPU2.4GHZ機器上運行測試程序,打印出花費時間約為484ms

可見在雙核CPU上運行單任務程序和單核CPU基本是一樣的,效率沒有任何提高。

下面再來把上面的快速排序程序變成并行的,一個簡單的方法就是將要排序的區(qū)間分成相同的幾個段,然后對每個段進行快速排序,排序完后再使用歸并算法將排好的幾個區(qū)間歸并成一個排好序的表,我們先四個線程來進行排序,代碼如下:

  1. void ** Merge(void **ppData, UINTuStart, UINTuEnd, 
  2.        void **ppData2, UINTuStart2, UINTuEnd2, COMPAREFUNCcfunc) 
  3.     UINTi, j, k; 
  4.     UINTu1, u2, v1,v2; 
  5.     void **pp1; 
  6.     void **pp2; 
  7.   
  8.     void **pp = (void **)malloc( (uEnd-uStart+1+uEnd2-uStart2+1) * sizeof(void *)); 
  9.     if ( pp == NULL ) 
  10.     { 
  11.         returnNULL; 
  12.     } 
  13.   
  14.     if ( (*cfunc)(ppData2[uStart2], ppData[uStart]) > 0 ) 
  15.     { 
  16.         u1 = uStart
  17.         u2 = uEnd
  18.         v1 = uStart2
  19.         v2 = uEnd2
  20.         pp1 = ppData
  21.         pp2 = ppData2
  22.     } 
  23.     else 
  24.     {        
  25.         u1 = uStart2
  26.         u2 = uEnd2
  27.         v1 = uStart
  28.         v2 = uEnd
  29.         pp1 = ppData2
  30.         pp2 = ppData
  31.     } 
  32.   
  33.     k = 0
  34.     pp[k] = pp1[u1]; 
  35.     j = v1
  36.     for (i = u1+1; i <= u2; i++ ) 
  37.     { 
  38.         while ( j <= v2 ) 
  39.         { 
  40.             if ( (*cfunc)(pp2[j], pp1[i]) < 0 ) 
  41.            { 
  42.                 ++k; 
  43.                 pp[k] = pp2[j]; 
  44.                 j++; 
  45.             } 
  46.             else 
  47.             { 
  48.                 break; 
  49.             } 
  50.         } 
  51.         ++k; 
  52.         pp[k] = pp1[i]; 
  53.     } 
  54.   
  55.     if ( j < v2 ) 
  56.     { 
  57.         for ( i = j; i <= v2; i++) 
  58.         { 
  59.             ++k; 
  60.             pp[k] = pp2[i]; 
  61.         } 
  62.     } 
  63.     returnpp; 
  64.   
  65. typedefstructSORTNODE_st { 
  66.        void **           ppData; 
  67.        UINT             uStart; 
  68.        UINT             uEnd; 
  69.        COMPAREFUNCfunc; 
  70. } SORTNODE; 
  71.   
  72.   
  73. DWORDWINAPIQuickSort_Thread(void *arg) 
  74.        SORTNODE   *pNode = (SORTNODE *)arg; 
  75.        QuickSort(pNode->ppData, pNode->uStart, pNode->uEnd, pNode->func); 
  76.        return 1; 
  77.   
  78. #define THREAD_COUNT    4 
  79.   
  80. INTMQuickSort(void **ppData, UINTuStart, UINTuEnd, 
  81. COMPAREFUNCCompareFunc) 
  82.     void **pp1; 
  83.     void **pp2; 
  84.     void **pp3; 
  85.        INT               i; 
  86.        SORTNODE   Node[THREAD_COUNT]; 
  87.        HANDLE        hThread[THREAD_COUNT]; 
  88.   
  89.        INT        nRet = CAPI_FAILED
  90.   
  91.        for ( i = 0; i < THREAD_COUNT; i++) 
  92.        { 
  93.               Node[i].ppData = ppData; 
  94.               if ( i == 0 ) 
  95.               { 
  96.                      Node[i].uStart = uStart; 
  97.               } 
  98.               else 
  99.               { 
  100.                      Node[i].uStart = uEnd * i /THREAD_COUNT + 1;  
  101.               } 
  102.               Node[i].uEnd = uEnd *(i+1) / THREAD_COUNT; 
  103.               Node[i].func = CompareFunc
  104.   
  105.               hThread[i] = CreateThread(NULL, 0, QuickSort_Thread, &(Node[i]), 0, NULL); 
  106.        } 
  107.   
  108.        for ( i = 0; i < THREAD_COUNT; i++ ) 
  109.        { 
  110.               WaitForSingleObject(hThread[i], INFINITE); 
  111.        } 
  112.   
  113.   
  114.     pp1 = Merge(ppData, uStart, uEnd/4, ppData, uEnd/4+1, uEnd/2, CompareFunc); 
  115.   
  116.     pp2 = Merge(ppData, uEnd/2+1, uEnd*3/4, ppData, uEnd*3/4+1, uEnd, CompareFunc); 
  117.   
  118.     if ( pp1 != NULL && pp2 != NULL ) 
  119.     { 
  120.         pp3 = Merge(pp1, 0, uEnd/2-uStart, pp2, 0, uEnd - uEnd/2 - 1, CompareFunc); 
  121.   
  122.         if ( pp3 != NULL ) 
  123.         { 
  124.             UINTi; 
  125.           
  126.             for ( i = uStart; i <= uEnd; i++) 
  127.             { 
  128.                 ppData[i] = pp3[i-uStart]; 
  129.             } 
  130.             free(pp3); 
  131.             nRet = CAPI_SUCCESS
  132.         } 
  133.     } 
  134.     if( pp1 != NULL) 
  135.     { 
  136.         free( pp1 ); 
  137.     } 
  138.     if ( pp2 != NULL ) 
  139.     { 
  140.         free( pp2 ); 
  141.     } 
  142.   
  143.     returnnRet; 

#p#

用下面程序來測試一下排1百萬個隨機整數(shù)的花費時間:

  1. voidTest_MQuickSort (void) 
  2.     UINTi; 
  3.     UINTuCount = 1000000; //1000個 
  4.   
  5.     srand(time(NULL)); 
  6.     void **pp = (void **)malloc(uCount * sizeof(void *)); 
  7.     for ( i = 0; i < uCount; i++ ) 
  8.     { 
  9.         pp[i] = (void *)(rand() % uCount); 
  10.     } 
  11.   
  12.        clockclock_tt1 = clock(); 
  13.     INTnRet = MQuickSort(pp, 0, uCount-1, UIntCompare); 
  14.        clockclock_tt2 = clock(); 
  15.   
  16.        printf("MQuickSort 1000000 Time %ld/n", t2-t1); 
  17.   
  18.     free(pp); 

在雙核CPU上運行后,打印出花費的時間為 234 ms , 單任務版的快速排序函數(shù)約需406ms左右,并行運行效率為:406/(2×234) = 86.7% 左右。運行速度快了172ms。

可見雙核CPU中,多任務程序速度還是有很大提高的。

當然上面的多任務版的快速排序程序還有很大的改進余地,當對4個區(qū)間排好序后,后面的歸并操作都是在一個任務里運行的,對整體效率會產(chǎn)生影響。估計將程序繼續(xù)優(yōu)化后,速度還能再快一些。

原文鏈接:http://blog.csdn.net/drzhouweiming/article/details/1109499

責任編輯:陳四芳 來源: blog.csdn.net
相關推薦

2010-04-26 16:51:04

Power 5

2009-04-18 14:52:54

雙核四核服務器

2011-08-16 17:05:35

2014-03-03 16:44:57

算法

2011-01-18 09:20:49

Linux嵌入式

2011-05-07 16:09:55

上網(wǎng)本華碩EeePC 101

2023-07-10 13:46:58

PythonLlama.cppLLM

2012-02-13 13:37:01

激光打印機評測

2012-03-28 22:29:28

手機

2025-10-17 01:55:00

排序算法快速排序Lomuto

2012-09-07 14:42:20

2009-03-24 10:53:09

Nehalem四核

2012-02-01 17:28:34

戴爾筆記本

2013-12-16 16:49:57

OpenMP

2009-07-28 19:28:37

四核CPU多核

2009-09-04 11:26:00

英特爾虛擬化

2011-05-25 11:25:23

快速排序Javascript

2009-08-13 10:35:05

Scala數(shù)組排序

2012-05-21 18:13:42

360特供機
點贊
收藏

51CTO技術棧公眾號

韩国理伦片一区二区三区在线播放 | 色播视频在线播放| 少妇精品高潮欲妇又嫩中文字幕| 激情欧美一区二区三区| 亚洲精品少妇网址| 手机在线视频你懂的| 亚洲欧美另类一区| 日韩在线观看一区二区| 色婷婷综合成人| 免费不卡的av| 久久久久毛片| 精品露脸国产偷人在视频| 亚洲第一在线综合在线| 亚洲女人18毛片水真多| 日本aⅴ免费视频一区二区三区| 欧美成人免费小视频| av网站有哪些| 亚洲精品一区在线| 欧美日韩你懂得| 成人在线免费观看av| 国产激情小视频在线| 91网页版在线| 91久久久一线二线三线品牌| 亚洲精品91天天久久人人| 国内精品美女在线观看| 日韩在线视频播放| 高潮毛片无遮挡| 高清精品xnxxcom| 亚洲精品中文在线影院| 欧洲亚洲一区二区| 人妻少妇精品无码专区| 国产一区视频网站| 国产精品揄拍500视频| 91国产丝袜播放在线| 一区二区在线| 久久精品国产99国产精品澳门| 男人天堂av电影| 欧美a一欧美| 亚洲成成品网站| 精品国产午夜福利在线观看| 国产福利亚洲| 欧美优质美女网站| 无遮挡亚洲一区| 欧美精品a∨在线观看不卡| 国产精品 欧美精品| 国产在线日韩在线| 一二三区在线播放| 免费高清不卡av| xxxx性欧美| 手机看片日韩av| 国产一区二区三区天码| 亚洲人成绝费网站色www| 亚洲调教欧美在线| 日韩高清在线免费观看| 91福利在线免费观看| 2022亚洲天堂| 在线观看特色大片免费视频| 午夜一区二区三区视频| 人妻夜夜添夜夜无码av| www555久久| 午夜精品免费在线观看| 免费看又黄又无码的网站| 91探花在线观看| 亚洲激情图片小说视频| 日b视频免费观看| 国产经典三级在线| 图片区小说区国产精品视频| 免费高清在线观看免费| a成人v在线| 色老综合老女人久久久| 天天色综合社区| 疯狂欧洲av久久成人av电影| 日韩精品影音先锋| 中文在线永久免费观看| 欧美精美视频| 最新的欧美黄色| 日本妇女毛茸茸| 99精品久久| 国产精品免费在线免费| 国产毛片久久久久| 成人三级在线视频| 久久久久久a亚洲欧洲aⅴ| 国产在线视频你懂得| 国产精品福利在线播放| 乱熟女高潮一区二区在线| 欧洲一区精品| 欧美日韩亚洲综合在线| 久久国产劲爆∧v内射| 亚洲影院天堂中文av色| 日韩一区二区精品视频| 国产一级片播放| 日韩和欧美一区二区三区| 成人免费看吃奶视频网站| 丰满大乳国产精品| 欧美国产日产图区| 日韩 欧美 视频| 中文日产幕无线码一区二区| 欧美精选在线播放| 91视频啊啊啊| 欧美亚洲国产日韩| 久久久精品亚洲| 久久精品视频5| 国产成人综合在线| 午夜老司机精品| 国产激情在线播放| 一区二区在线免费观看| 欧美s码亚洲码精品m码| www.欧美视频| 亚洲色图国产精品| 免费无码毛片一区二区app| 日韩国产一区| 性欧美xxxx视频在线观看| 亚洲国产精品久| 视频在线观看91| 国产精品9999久久久久仙踪林| 番号在线播放| 黄色精品一区二区| 4438x全国最大成人| 欧美综合视频| 中文字幕欧美专区| 日韩精品国产一区二区| 国产一区二区免费视频| 天天人人精品| 日韩欧美看国产| 亚洲国产精品久久久久秋霞蜜臀| 国产福利在线导航| 久久蜜桃资源一区二区老牛| 国产一区二区高清不卡| jizz性欧美| 在线播放/欧美激情| 男人的天堂av网| 亚洲综合三区| 精品欧美一区二区久久久伦| 女子免费在线观看视频www| 欧美电影一区二区三区| 亚洲 欧美 国产 另类| 久久深夜福利| 欧美一进一出视频| 周于希免费高清在线观看| 亚洲大胆人体视频| 国产对白videos麻豆高潮| 国产成人在线观看免费网站| 久久免费一级片| 天堂久久av| 久久99青青精品免费观看| 国产熟女精品视频| 亚洲免费观看高清完整版在线 | 综合毛片免费视频| 日韩www在线| 九九热精品视频在线| av一区二区久久| 337p粉嫩大胆噜噜噜鲁| 日韩精品导航| 日韩美女中文字幕| 国产日韩精品在线看| 日本丰满少妇一区二区三区| 亚洲成人网在线播放| 日韩精品一卡二卡三卡四卡无卡| 热re99久久精品国99热蜜月 | 亚洲综合中文字幕在线观看| 91蜜桃在线视频| 精品福利av导航| 久久国产精品影院| 久久狠狠婷婷| 午夜精品美女久久久久av福利| 成人国产激情在线| 久久精彩免费视频| 亚洲av无码专区在线| 午夜欧美在线一二页| 欧美bbbbb性bbbbb视频| 日韩精品电影一区亚洲| 亚洲免费视频一区| 日本精品视频| 欧美亚洲国产成人精品| av福利在线播放| 欧美刺激脚交jootjob| 色播视频在线播放| 国产精品乱人伦| 制服下的诱惑暮生| 国产欧美精品久久| 午夜欧美性电影| 亚洲不卡视频| 国产99在线|中文| 国产成人高清精品| 日韩高清中文字幕| 亚洲天堂免费av| 亚洲图片有声小说| 99精品欧美一区二区| 国产精品白丝av| 五月婷婷一区| av成人综合| 国产精品美女久久久久久免费 | 国产成人午夜视频网址| fc2ppv国产精品久久| 日韩国产精品一区| 国产精品欧美久久久久天天影视| 亚洲va欧美va国产va天堂影院| 我不卡一区二区| 丁香婷婷综合五月| 在线观看免费视频高清游戏推荐| 激情欧美日韩一区| 丰满女人性猛交| 亚洲自拍电影| 国产高清精品一区二区| 成人交换视频| 97视频在线观看播放| 黄色精品在线观看| 制服丝袜激情欧洲亚洲| 欧美精品亚洲精品日韩精品| 综合久久综合久久| 最近中文字幕在线mv视频在线| 国内精品免费在线观看| 国产一级片黄色| 亚洲国产三级| 久久久天堂国产精品| 日韩精品91| 欧美日韩国产不卡在线看| 91精品啪在线观看国产手机| 国产综合香蕉五月婷在线| a一区二区三区| 午夜精品一区二区三区在线| av在线免费网站| 日韩日本欧美亚洲| 成人资源www网在线最新版| 日韩电视剧在线观看免费网站 | 亚洲美女av网站| 免费的黄色av| 欧美一级日韩免费不卡| 黄色污在线观看| 国产一区二区剧情av在线| 亚洲一级免费观看| 日日夜夜精品免费视频| 精品这里只有精品| 91久久亚洲| 日韩网站在线免费观看| 好吊日精品视频| 青青在线视频免费观看| 一区二区电影在线观看| 丰满女人性猛交| av高清一区二区| 久久人人88| 亚洲美女搞黄| 99精品网站| 在线视频不卡一区二区三区| 日韩av大片| 亚洲一区二区精品在线| 日韩精品首页| www.午夜色| 欧美在线91| 97超碰国产精品| 夜夜嗨av一区二区三区网站四季av| 日本免费a视频| 在线看片成人| 精品欧美一区免费观看α√| 国产精品日韩欧美一区| 亚洲色欲综合一区二区三区| 性xx色xx综合久久久xx| 波多野结衣家庭教师视频| 美女久久一区| 国产原创精品在线| 国产一区二区调教| 2018国产精品| 久久综合丝袜日本网| 中文字幕av久久爽一区| 国产精品久久国产精麻豆99网站 | 日韩在线精品| 97精品国产97久久久久久粉红| 一本精品一区二区三区| 草b视频在线观看| 久久国产精品99国产| 中文字幕第88页| 国产成人免费视频| aa一级黄色片| 中文字幕在线一区二区三区| 美女福利视频在线观看| 黑人巨大精品欧美一区二区三区| 老熟妇仑乱一区二区av| 欧美精品乱人伦久久久久久| 性猛交富婆╳xxx乱大交天津| 亚洲国内精品在线| jyzzz在线观看视频| 九九精品在线视频| 欧美大电影免费观看| 91久久嫩草影院一区二区| 九色丨蝌蚪丨成人| 亚洲午夜精品国产| 国内视频精品| 午夜欧美福利视频| 懂色av中文一区二区三区 | 中国av一区| 韩国黄色一级大片| 久久综合亚州| 野花视频免费在线观看| 国产午夜久久久久| 免费网站看av| 欧美揉bbbbb揉bbbbb| 免费a级片在线观看| 色吧影院999| 色在线免费观看| 99国产视频在线| 欧美日韩国产传媒| 久久久久久久久久网| 九九在线精品视频| 波多野结衣av在线观看| 丁香激情五月少妇| 天天综合网天天综合色| 一区二区三视频| 久久综合给合| 日本不卡久久| 99热这里只有精品8| 亚洲制服中文字幕| 日韩精品欧美精品| 中文字幕人妻无码系列第三区| 久久久久国产成人精品亚洲午夜 | 成人影院免费观看| 91黄色8090| 日韩中文字幕一区二区高清99| 色综合电影网| 午夜亚洲性色福利视频| 亚洲麻豆一区二区三区| 日韩毛片精品高清免费| 中文天堂在线播放| 国产婷婷成人久久av免费高清 | www激情五月| 国产精品天干天干在线综合| 伦av综合一区| 亚洲精品久久久久久下一站| av官网在线播放| 国产精品自拍视频| 国精一区二区| 成人一级片网站| 91视频在线看| 五月天婷婷综合网| 欧美精品一区二区三区在线播放| www免费视频观看在线| 国产精品视频专区| 欧美一区二区麻豆红桃视频| wwwxxx黄色片| 久久久久久免费网| 麻豆成人免费视频| 亚洲人成电影网站色| 亚洲黄色免费看| 久久综合狠狠综合久久综青草| 亚洲国产日韩欧美一区二区三区| 高清中文字幕mv的电影| 亚洲一区二区三区三| 亚洲精品免费网站| 亚洲国产高清在线观看| av动漫免费观看| 国产在线不卡视频| 国产免费无码一区二区视频| 日韩免费看网站| 久草在线资源站资源站| 国产免费一区二区| 亚洲乱码久久| 在线观看日韩精品视频| 欧美午夜宅男影院在线观看| 牛牛澡牛牛爽一区二区| 国产91在线播放九色快色| 欧美久久综合网| www.超碰97.com| 亚洲色图.com| 丁香花免费高清完整在线播放| 高清欧美一区二区三区| 欧美特黄aaaaaaaa大片| 欧美一区国产一区| 日本亚洲欧美天堂免费| 99精品中文字幕| 91精品福利在线一区二区三区| 怡红院在线播放| 精品国产aⅴ麻豆| 久久精选视频| 国产免费嫩草影院| 日韩一区二区在线看| 国产社区精品视频| 秋霞在线观看一区二区三区| 精东粉嫩av免费一区二区三区| 日本黄色小视频在线观看| 欧美一区二区精美| 蜜臀av在线| 欧美国产视频在线观看| 蜜桃久久精品一区二区| 美国黄色小视频| 亚洲欧美色图片| 国产麻豆一区二区三区| 日本欧美黄色片| 国产欧美精品一区| 亚洲国产999| 日韩美女主播视频| 欧美在线二区| 久久午夜福利电影| 欧美v亚洲v综合ⅴ国产v| 免费欧美电影| 免费看毛片的网址| 中文字幕+乱码+中文字幕一区| 可以免费看毛片的网站| 国产91久久婷婷一区二区| 欧美黄色aaaa| 欧美精品日韩在线| 亚洲国产高清高潮精品美女|