對threadpool的效能測試

來源:互聯網
上載者:User

自己編寫的threadpool(http://www.oschina.net/code/snippet_102078_2072或者http://jaff20071234.download.csdn.net/),沒有正規的文檔,只能自己編寫程式進行效能測試了。

 

1。

建立一個threadmanage對象只含有10個線程,同時運行10000個任務,每個任務的工作是迴圈50次列印字串。

建立一個threadmanage對象只含有100個線程,同時運行10000個任務,每個任務的工作是迴圈50次列印字串。

兩次啟動並執行時間差距不大,均需要30多秒,說明此時受到了處理器資源的限制。

測試代碼如下:

CThreadManage threadManage(100);<br /> _sleep(100);<br /> //create 10000 tasks to execute in this threadpool.<br /> CTask task[10000];<br /> int i = 0;<br /> char *data[10000];<br /> for(i = 0; i < 10000; i++)<br /> {<br /> data[i] = (char *)malloc(15);<br /> sprintf(data[i],"task%d",i);<br /> threadManage.Run(&task[i],data[i]);<br /> _sleep(1);<br /> }<br /> _sleep(1000);<br /> clock_t m_sec = clock();<br /> printf("costing time is :%ld",m_sec); 

2。

建立一個threadmanage對象只含有10個線程,同時運行10000個任務,每個任務的工作是迴圈50次列印字串。

另外只在一個主線程中運行50*10000次列印輸出,如果運行同樣的任務,按照上面的思路去理解,需要的時間應該要少,

因為是直接調用運行,不需要經過多次函數調用,訊號等待,和任務等待等等。

但是從另外一個角度,此時只有一個線程運行,運用的處理器資源少,所以需要時間要長,結果是45秒左右。

測試代碼如下:

char *data = "thread";<br /> int i = 0;<br /> while(i < 50 * 10000)<br /> {<br /> fprintf(stdout,"%s-%d is running./n",data,i);<br /> i++;<br /> }<br /> clock_t m_sec = clock();<br /> printf("costing time is :%ld",m_sec); 

隨便測試了一個100000個任務時,就恐怖了,從上完廁所回來,只執行了20000個,哎,分布式的伺服器才會滿足n多使用者

時的需求吧 ~~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.